Grafana graph title from Prometheus snmp_exporter metrics - snmp

I want to graph interfaces usage from HP switch using snmp_exporter. As an index I use ifName. snmp.yml generator and scraping to Prometheus from switch works ok. Grafana shows graphs with a title taken from ifName.
But ifName is like Ethernet1/0/1 and so on. I have another metrics: ifAlias which I can configure on a switch with 'description' command e.g. 'UPLINK'.
So what I want to achieve, is to put ifAlias as a graph title next to ifName. I can not use ifAlias as an index, because it is not unique (most of ifAlias is empty like ifAlias="").
Is it possible to do something like that? If yes, then how? :-)
What I tried, it to use group_left and combine two metrics. It works, but I can only put ifAlias into Legend field like {{ifAlias}}.
Thanks in advance.
V.
ifAlias{ifAlias="",ifName="Ethernet1/0/1",instance="access",job="3com_snmp_exporter"}
ifAlias{ifAlias="UPLINK",ifName="GigabitEthernet1/0/25",instance="access",job="3com_snmp_exporter"}
ifName{ifName="Ethernet1/0/1",instance="access",job="3com_snmp_exporter"}
ifName{ifName="GigabitEthernet1/0/25",instance="access",job="3com_snmp_exporter"}

Related

Number of restaurants with specific cuisine in each country

I am trying to figure out how many restaurants, in each country, there are of a specific cuisine (seafood). I have looked at Google Places Api and TripAdvisor Api, but cannot find these numbers. I donĀ“t need the list of restaurants, only number of restaurants. I found OpenStreetMap which looked very promising. I downloaded data for Norway, but the numbers are not correct (osmium tags-filter norway-latest.osm.pbf cuisine=seafood) = 62, which is way to low.
Any suggestion for how and where I can find what I am looking for?
Extrapolate.
You won't get an accurate answer, how do you even define what a seafood restaurant is?
Find out roughly how many restaurants there are in the area you are interested in and then decide what % of them might be seafood restaurants.
You can use this approach to extract the data from OpenStreetMap:
https://gis.stackexchange.com/questions/363474/aggregate-number-of-features-by-country-in-overpass
You can run the query on http://overpass-turbo.eu/ (go to settings and chose the kumi-systems server).
The query could look like this:
// Define fields for csv output
[out:csv(name, total)][timeout:2500];
//All countries
area["admin_level"=2];
// Count in each area
foreach->.regio(
// Collect all Nodes with highway=milestone in the current area
( node(area.regio)[cuisine=seafood];
way(area.regio)[cuisine=seafood];
rel(area.regio)[cuisine=seafood];);
// assemble the output
make count name = regio.set(t["name:en"]),
total = count(nodes) + count(ways) + count(relations);
out;
);
This query can take a long time (at the time of writing, mine did not yet finish)
You can also run the query via curl in on some server and let the results mailed to you via curl ....... | mail -s "Overpass Result" yourmail#example.com. You get the curl command in the browser network tab by "copy curl"
I also considered Taginfo (https://taginfo.openstreetmap.org/tags/cuisine=seafood) but it cannot filter by tag.

Gremlin Post Filter Path

I have a gremlin query that follows this pattern:
g.V().has('LOCATION', textContains('FLORIDA')).
repeat(bothE().otherV().simplePath()).emit().times(5).
has('LOCATION',textContains('VIRGINIA')).
path().by(valueMap('LOCATION')).dedup()
Output could look something like this:
FLORIDA-->ALABAMA-->TENNESSEE-->VIRGINIA
FLORIDA-->GEORGIA-->TENNESSEE-->VIRGINIA
FLORIDA-->GEORGIA-->SOUTH CAROLINA-->NORTH CAROLINA-->VIRGINIA
etc...
Is there a way to filter after the path step to get only routes that go through ALABAMA (for instance). ALABAMA might not always be the second hop either so it would need to be dynamic enough to look across the whole path regardless of where the state to include might fall. Another wrinkle is there could be multiple states to filter on, for instance something like show me paths that include ALABAMA or include SOUTH CAROLINA or etc. In the actual application of this query there are multiple properties fed into the valueMap() as well but just tried to simplify it here. This could be similar to this question:
filter the gremlin results
but I can't figure out how to get back to a valueMap() after the filter step without an error. I tried something like this but wasn't sure where to go from here:
g.V().has('LOCATION', textContains('FLORIDA')).
repeat(bothE().otherV().simplePath()).emit().times(5).
has('LOCATION',textContains('VIRGINIA')).
path().filter(unfold().has('LOCATION', textContains('ALABAMA'))).
by(valueMap('LOCATION')).dedup()
You can use a sack to track this. Here is an example from Practical Gremlin that should help. The query finds routes that go from Austin to Edinburgh with at least one stop in Manchester. Similar to your Alabama use case. If Manchester is encountered along the path, a sack is incremented by one. As simplePath is used a location will never be visited twice. If, by the time EDI is reached, the sack contains a 1 then we know we went via MAN.
g.withSack(0).V().
has('code','AUS').
repeat(out().simplePath().has('country',within('US','UK')).
choose(has('code','MAN'),sack(sum).by(constant(1)))).
until(has('code','EDI')).
where(sack().is(1)).
path().by('code').
limit(10)
For further reading http://www.kelvinlawrence.net/book/PracticalGremlin.html#via

How to perform Sorting using flow steps in WebMethods (Software AG)?

I am new to this Middleware and I tried my level best to perform sorting using the flow steps in designer but couldn't make it.Can anybody help me out by giving me direction for how to complete my work?(like the flow steps in order and where i can put the conditions and all)
Thanks.
No need to over-complicate it - use the utilities - pub.document:sortDocuments is what you are looking for.
If you receive stringList as input - convert this into a documentList. This can be done using pub.list:stringListToDocumentList (set the key to 'value')
Use pub.document:sortDocuments to sort the documentList. Remember to specify the key as 'value' once again and compareStringAs as 'numeric'. The order can also be set (ascending/descending)
What do you want to Sort? For Document-Lists you will find a built-in services in the WmPublic Folder.
For String-Lists i would use a Java-Service for Sorting.
Logic behind Sorting in webMethods is same as all other languages. You need LOOP to iterate every string in stringList, BRANCH to compare the two number and then map to the compare result to new StringList.
What format do you have the numbers in? Are they in a flat file or in a string list etc.

How to ignore "stop words" while sorting in MarkLogic?

Is there any way to ignore "stop words" while sorting.
For example:
I have words like
dixit
singla
the marklogic
On sorting in descending order the result should be
singla, the marklogic, dixit
As in the above example the is ignored.
Any way to achieve this?
Update:
Stop word can occur at any place.
for example
the MarkLogic
MarkLogic is the best
the MarkLogic is awesome
while sorting should not consider any stop word in the text.
Above is just a small example to describe the problem.
In actual I am using search:search API.
For sorting, I am using sort-order search options.
The element on which I have to perform sorting is dynamic. There are approx 30-35 elements.
Is there any way to customize the collation at this level like to configure some words (stop words) which will be ignored while sorting.
There is no standard collation URI that is going to do this for you (at least none that I've ever seen). You can do it dynamically, of course, by sorting on the result of a function invocation, but if you want it done efficiently at scale (and available to search:search), then you need to materialize the sortable string into your document. I've often done this as an attribute on the element:
<title sortable="Great Gatsby, The">The Great Gatsby</title>
Then you put a range index on the title/#sortable attribute.
You can also use the "envelope pattern" where materialized metadata like this is maintained in its own section of the document with the original kept in its own section. For things like this, I think it's a bit more elegant to decorate the elements directly, to keep the context.
If I understand your question correctly you're trying to get rid of the definite article when sorting your result-set.
In order to do this you need to use some additional functions and create a 'sort' criteria. My solution would look like this (I'm also including some sample documents so that you can test this just by copy-pasting):
(:
xdmp:document-insert("/peter.xml", <person><firstName>Peter</firstName><lastName>O'Toole</lastName><age>60</age></person>);
xdmp:document-insert("/john.xml", <person><firstName>John</firstName><lastName>Adams</lastName><age>18</age></person>);
xdmp:document-insert("/simon.xml", <person><firstName>Simon</firstName><lastName>Petrov</lastName><age>22</age></person>);
xdmp:document-insert("/mark.xml", <person><firstName>Mark</firstName><lastName>the Lord</lastName><age>25</age></person>);
:)
for $person in /person
let $sort := fn:reverse(fn:tokenize($person/lastName, ' '))[1]
order by $sort
(: return $person :)
return $person/lastName/text()
Notice that now the sort order is going to be
- Adams
- the Lord
- O'Toole
- Petrov
I hope this will help.

How to use the PubMed API to search for an article with an exact title?

I'm trying to use the PubMed API to search for articles with an exact title. As an example, I want to search for the title: The cost-effectiveness of mirtazapine versus paroxetine in treating people with depression in primary care.
I want up to 1000 results in JSON format, so I know that the first part of my URL should look like this:
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmode=json&retmax=1000&term=
How do I add a title search as a GET parameter?
I've been using the Pubmed advanced search constructor, and that suggests that the query should look like The cost-effectiveness of mirtazapine versus paroxetine in treating people with depression in primary care[Title].
But if I try just adding that to the URL term=, PubMed tries to break down the title into all kinds of peculiar queries:
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmode=json&retmax=1000&term=The%20cost-effectiveness%20of%20mirtazapine%20versus%20paroxetine%20in%20treating%20people%20with%20depression%20in%20primary%20care[Title]
How can I specify an exact title as a GET param?
Use field=title
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmode=json&retmax=1000&term=The%20cost-effectiveness%20of%20mirtazapine%20versus%20paroxetine%20in%20treating%20people%20with%20depression%20in%20primary%20care&field=title
Check out ESearch API for more information:
http://www.ncbi.nlm.nih.gov/books/NBK25499/#_chapter4_ESearch_
Use + instead of %20 (space).
For example:
http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&retmode=json&retmax=1000&term=cost+effectiveness+of+mirtazapine[title]

Resources