Basics queries in Kusto query language.

Azure demo environment here.

Mostly used Operators:

 

Search

Perf | search “Memory” This searched for a column whose value exactly matched the word Memory.
search in (Perf, Event, Alert) “memory” A better choice is to limit the search to specific tables.
Perf | search CounterName==”Available MBytes” Within a table can search a specific column for an exact value.
Perf | search CounterName:”MBytes” Search for the value anywhere in the text in the specific column, return “Available MBytes”, “Used mBytes” .
Perf | search “*Bytes*” Search across all columns using wildcards.
Perf | search * startswith “Bytes” Begins with Bytes then any text after it.
Perf | search * endswith “Bytes” Ends with Bytes.
Perf | search “Free*Bytes” Begins with Free, ends with bytes, anything in beetwin.
Perf | search “Free*bytes” and (“C:” or “D”) Searches can be combined logically.
Perf | search InstanceName matches regex “[A-Z]:” Search also supports regular expressions.

 

Where

Similar to search, where limits the result set. Rather than looking across columns for values, where limits based on conditions

Perf | where TimeGenerated >= ago(1h) Returns all during 1 hour (d – day, h – hours, m – minutes, s – seconds, ms – milliseconds).
Perf | where TimeGenerated >= ago(1h) and CounterName == “Bytes Received/sec” Can build up the where by adding to it logically.
Perf | where TimeGenerated >= ago(1h) and (CounterName == “Bytes Received/sec” or CounterName == “% Processor Time”) OR logic is allowed too!
Perf
| where TimeGenerated >= ago(1h)
| where (CounterName == “Bytes Received/sec” or CounterName == “% Processor Time”)
| where CounterValue > 0
Stackable where operators.
Perf | where * has “Bytes” You can simulate search using where. Here it searches all columns in the input for the phrase Bytes somewhere in a column’s value.
Perf | where * hassuffix “Bytes” At the start.
Perf | where * hassuffix “Bytes” At the end.
Perf | where * contains “Bytes” Contains and has behave the same.
Perf | where InstanceName matches regex “[A-Z]:” Where supports regex as well.

 

Take

Take is used to grap a random number of rows from the input data.

Perf | take 10 Returns 10 random rows.
Perf | limit 10 Limit is synonym for “Take”.

 

Count

Perf | count Returns the numbers of rows in the input dataset
Perf
| where TimeGenerated >= ago(1h)
and CounterName == “Bytes Received/sec”
and CounterValue > 0
| count
Can also use with other filters.

 

Summarize

Perf
| summarize count() by CounterName
Summariaze allows you count number or rows by column using the count() aggregation function.
Perf
| summarize count() by ObjectName,CounterName
Can break down by multiple columns.
Perf
| summarize PerfCount=count() by ObjectName, CounterName
You can rename the output column for count.
Perf
| where CounterName == “% Free Space”
| summarize NumberOfEntries=count(), AverageFreeSpace=avg(CounterValue)
by CounterName
With Summarize, you can use other aggregation functions.
Perf
| summarize NuberOfEntries=count() by bin(TimeGenerated, 1d)
Bin allows you to summarize into logical groups, like days.
Perf
| summarize NuberOfEntries=count() by CounterName, bin(TimeGenerated, 1d)
Can bin at multiple levels.

 

Extends

Perf
| where CounterName == “Free Megabytes”
| extend FreeGB = CounterValue / 1000
Extend creates c calculated column and adds to the result set.
Perf
| where CounterName == “Free Megabytes”
| extend FreeGB = CounterValue / 1000, FreeKB = CounterValue * 1000
Can extend multiple columns at the same time.
Perf
| where TimeGenerated >= ago(10m)
| extend ObjectName = strcat(ObjectName, ” – “, CounterName)
Can also use with strcat to create new string colums.

 

Project

Perf
| project ObjectName, CounterName, InstanceName, CounterValue,  TimeGenerated
Project allows you to select a subset of columns.
Perf
| where CounterName ==”Free Megabytes”
| project ObjectName,
CounterName,
InstanceName,
CounterValue,
TimeGenerated
| extend FreeGB = CounterValue /1000,
FreeMB = CounterValue,
FreeKB = CounterValue * 1000
Combine Project with Extend.
Perf
| where CounterName ==”Free Megabytes”
| project ObjectName,
CounterName,
InstanceName,
CounterValue,
TimeGenerated,
FreeGB = CounterValue /1000,
FreeMB = CounterValue,
FreeKB = CounterValue * 1000
Project can simulate the extend.
Perf
| where TimeGenerated > ago(1h)
| project-away TenantId,
SourceSystem,
CounterPath,
MG
There is a variant called project-away. It will project except the columns listed.
Perf
| where TimeGenerated > ago(1h)
| project-rename myRenamedComputer = Computer
If you only want to rename a column, then another variant of project is project-rename. It will rename the specified column but then pass the rest of the columns through.

 

Distinct

Perf | distinct ObjectName, CounterName Return a list of deduplicated values fro columns for the input dataset
Event
| where EventLevelName == “Error”
| distinct Source
Distinct can be used to limit a result set. Get a list of all sources that had an error event.

 

Top

Perf | top 20 by TimeGenerated desc Top returns the first N rows of the dataset when the dataset is sirted by the “by” clause.

 

Scalar Operators

print “Hello World” Print can be used to display output to the result grid. It is primarily a debugging tool. You can use it for static text.
print 2 * 3 More commonly to confirm calculations.
print NameOfColumnt = 2 * 3 You  can also name the output column.
print now() Returns the current date/time.
print ago(1d)
print ago(1h)
print ago(1m)
print ago(1s)
print ago(1ms)
print ago(-1d)
print ago(-365d)
Back 1 day
Back 1 hour
Back 1 minute
Back 1 second
Tomorrow
1 year in the future
Perf

| where TimeGenerated > ago(1h)
| where CounterName == “Avg. Disk sec/Red”
and InstanceName == “C:”
| project Computer, TimeGenerated, ObjectName, CounterName, InstanceName, CounterValue
| sort by Computer, TimeGenerated

Sort will sort the output od a query. “Sort by” could be replaced by “order by”
Perf

| where ObjectName == “LogicalDisk”
and InstanceName matches regex “[A-Z]:”
| project Computer, CounterName, extract(“[A-Z]:”,1,InstanceName)

Extract pulls part of a passed in string (the third parameter) base on the regular expression place inside parnethesis. The second param detemines what is returned. A 0 returns whe wholw epression
Perf

| where ObjectName == “LogicalDisk”
and InstanceName matches regex “[A-Z]:”
| project Computer, CounterName, extract(“([A-Z]):”,1,InstanceName)

When the second param is 1, it returns just the part in the parenthesis.
Event

| where RenderedDescription startswith “Event code: ”
| parse RenderedDescription with “Event code: ” myEventCode
“Event message: ” myEventMessage
“Event time: ” myEventTime
“Event time (UTC): ” myEventTimeUTC
“Event ID: ” myEventID
“Event sequence: ” myEventSequence
“Event occurrence: ” *
| project myEventCode, myEventMessage, myEventTime, myEventTimeUTC, myEventID, myEventSequence

Evaluates a string expression and parses its value into one or more calculated columns. The calculated columns will have nulls, for unsuccessfully parsed strings. For more information, see the parse-where operator.
Perf
| where CounterName == “AVG. Disk sec/Read”
| where CounterValue > 0
| take 10
| extend HowLongAgo=( now() – TimeGenerated)
| project Computer, CounterName, TimeGenerated, HowLongAgo
Determine how long ago a counter was generated
Perf
| where CounterName == “AVG. Disk sec/Read”
| where CounterValue > 0
| take 10
| extend HowLongAgo=( now() – TimeGenerated),
TimeSinceStartOfYear=(TimeGenerated – datetime(2019-01-01))
| project Computer, CounterName, TimeGenerated, HowLongAgo, TimeSinceStartOfYear
Time since a specifig date (i.e. star of the year)

Pokud potřebujete připojit NFS disk na Windows a chcete nastavit také plná oprávnění je potřeba provést dodatečná nastavení.

  1. Instalace NFS klienta, je popsáno např. zde https://davidring.ie/2018/07/06/windows-2016-mount-an-nfs-share/
  2. Připojit NFS disk pomoci skriptu. Zde můžete použít více způsobů. Pokud se má disk namapovat více doménových uživatelům, tak určitě použíjete GPO a skript formou bat souboru.gpo

Obsah bat souboru muže výpadat:

mount -o mtype=hard \\10.10.10.110\my_share X:

Ve výchozím nastavení má anonymní uživatel oprávnění pouze ke čtení, což je nastavení UID a GID s hodnotou -2 viz obrázek

windows-nfs-mount

Změnu UID a GID je potřeba provést v nastavení registru:

  1. Otevřete regedit.
  2. Přejděte do HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default.
  3. Vytvořte nový klíč New DWORD (32-bit) Value ve složce Default a pojmenujte AnonymousUid, nastavte hodnotu UID, kterou má UNIX adreář pro váši sdílenou sloužku.
  4. Vytvořte nový klíč New DWORD (32-bit) Value ve složce Default a pojmenujte AnonymousGid, nastavte hodnotu GID, kterou má UNIX adreář pro váši sdílenou sloužku.

regedit-nfs-anonymous-uid

Pro UID, GIT můžete nastavit hodnotu 0, což systém pochopí, že přistupujete jako účet ROOT.

Pro zjednodušení si vytvořte soubor s koncovkou .reg a vložte obsah:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\ClientForNFS\CurrentVersion\Default]
"AnonymousUid"=dword:0
"AnonymousGid"=dword:0

Po spustění se vám vytvoří v registru potřebné klíče.

Nyní restartujte NFS klienta nebo celý počítač.

nfsadmin client stop
nfsadmin client start

Následně bude nastavení vypadat takto (výstup dostanete po spuštění příkazu mount):

Local    Remote                                 Properties
-------------------------------------------------------------------------------
X:       \\10.10.10.10\my_share                 UID=0, GID=0
                                                rsize=1048576, wsize=1048576
                                                mount=soft, timeout=1.6
                                                retry=1, locking=yes
                                                fileaccess=755, lang=ANSI
                                                casesensitive=no
                                                sec=sys

Dále můžete nastavit výchozí chování NFS klienta, například potřebujete, aby vaše soubory měly Read, Write oprávnění pro všechny v linux světě jde o nastavení 777.

nfsadmin client config fileaccess=777

Při jakékoliv změně je potřeba vždy provést restart NFS klienta, takže opět následují příkazy:

nfsadmin client stop
nfsadmin client start

Protože není až tak snadné se zorientovat v Open Source licencích, pokusil jsem se zmapovat problematiku v krátkém článku.

Když mluvíme o prodeji softwaru, musíme rozlišovat tři složky:

Ve většině případů vlastnictví software zůstává osobě nebo společnosti, který jej vytvořila. Uživatelům je pouze přidělena licence k užívání. Převod peněz je závislý na obchodním modelu tvůrce. Licence odlišuje open source software od closed source software.

Uveďme si dva příklady:

Microsoft vlastní produkt Microsoft Windows. Licenční smlouva s koncovým uživatelem (EULA), je právní dokument, který musíte „proklikat“, čímž vyjádříte svůj souhlas s užíváním softwaru a mohli si jej tak nainstalovat. Microsoft udržuje zdrojový kód a distribuuje pouze binární kopie prostřednictvím autorizovaných kanálů. U většiny spotřebitelských produktů, které mají povolení k instalaci softwaru na jednom počítači, není dovoleno pořizovat kopie jinak než pro zálohování disku. Platíte tedy za jednu kopii softwaru, kde vám výrobce poskytne menší aktualizace, ale ne významnou modernizaci.

Linux je ve vlastnictví Linuse Torvaldse. Tento pán publikoval kód pod licencí GNU, Public License verze 2 (GPLv2). Tato licence, mimo jiné říká, že zdrojový kód musí být každému k dispozici a každý můžete provádět změny v kódu. Je však třeba zmínit, že pokud provedete změny v kódu a svůj kód dále distribuujete, musíte změny publikovat pod stejnou licencí. GPLv2 také říká, že není dovoleno účtovat poplatky za distribuci zdrojového kódu vyšší, než jsou vaše skutečné náklady (například kopírování na CD).

Obecně platí, že když něco vytvoříte, máte také právo rozhodnout, jak je software používán a distribuován. Free a Open Source Software (FOSS) je software, který je možné volně šířit s možností prohlížení zdrojového kódu. Linus Torvalds i když je autorem Linuxu, vám nemůže zakázat instalaci na vašem počítači, protože se této možnosti vzdal přímo přes licencí GPLv2.

Licencování softwaru je politická otázka a tedy není žádné překvapení, že existuje mnoho různých názorů. Z toho důvodu si některé organizace začaly vytvářet své vlastní licence, která odrážejí jejich konkrétní postoje. Například vysoké školy jako je Massachusetts Institute of Technology (MIT) a University of California jsou toho příkladem a vytvořily si své vlastní licence. Stejně jako jiné projekty, kde můžeme zmínit např. dobře známý Apache.

Free Software Foundation a Open Source Initiave

Mezi dvě největší skupiny ve světe open source patří: Free Software Foundation (FSF) a Open Source Initiave (OSI).

Free Software Foundation byla založena v roce 1985 Richardem Stallmanem. Cílem skupiny bylo podporovat Free Sortware. Svobodný software, jak asi všichni tušíme, není založen na ceně, ale na svobodě sdílení, studia a modifikace zdrojového kódu. Pohled FSF na proprietární software, tedy software bez možnosti modifikace zdrojového kódu, je označen za špatný. FSF zastává názor, že softwarové licence by měly prosazovat otevřenost změny kódu. FSF zastává také názor, že pokud změníte bezplatný software, máte automaticky povinnost tyto změny sdílet. Tato specifická filozofie se nazývá „copyleft“.

FSF vyvinuli svou vlastní sadu licencí, jako je GPLv2, GPLv3 a Lesser GPL licence verze 2 a 3 (LGPLv2 & LGPLv3). Lesser licence jsou podobné jako běžné licence GPL, jen mají ustanovení vztahující se k šíření „non-free“ software. Například pod licencí GPLv2 není možné distribuovat software, který používá uzavřenou „source“ knihovnu (například ovladač hardwaru), naopak varianta Leeser právě toto umožňuje.

Změny mezi verze 2 a 3 jsou z velké části zaměřeny na využití svobodného softwaru na uzavřené hardwarové zařízení – Tivoization, s kterým přišla společnost TiVo. TiVo je společnost, která staví televizní digitální videorekordéry na vlastním hardwaru a používá Linux jako základnu pro jejich software. Zatímco TiVo uvolnil zdrojový kód své verze systému Linux, jak je požadováno v rámci licencí GPLv2, hardware však nespolupracoval s modifikovanými verzemi knihoven. V očích FSF to šlo proti duchu GPLv2.

Open Source Initiative bylo založeno v roce 1998 Brucem Perensem a Ericem Raymondem (ESR). Pánové byli přesvědčeni, že svobodný software byl příliš politicky svázan a že je nutné zavést méně svazující licence a to zejména kolem copyleftových aspektů FSF licencí. OSI je přesvědčena, že by zdrojové kódy měly být nejen volně dostupné, ale také by neměla existovat žádná omezení na používání softwaru bez ohledu na to, jaký je účel použití. Na rozdíl od FSF, OSI nemá svou vlastní sadu licencí. Místo toho, OSI má sadu principů a vytváří další nové licence. V případě, že jsou splněny OSI principy, se tyto licence řadí do Open Source Licence. Software, který je ve shodě se licencemi Open Source je tedy Open Source Software.

Některé z Open Source licencí patří do rodiny BSD licencí. BSD licence jsou mnohem jednodušší než GPL. Licence pouze uvádějí, že můžete redistribuovat zdrojový kód a binární soubory tak dlouho, jak platí oznámení o autorských právech a to bez udání informace, zda původní autor souhlasí s vámi upravnou verzí programu. Jinými slovy: „dělejte se softwarem co chcete, jen neříkejte, že jste software napsali sami.“ Další licence s označením MIT má hodně podobného ducha, jen s mírně odlišným zněním.

Zmíněné FSF licence GPLv2 samozřejmě také spadají do Open Source. Nicméně, mnoho licencí Open Source, jako BSD a MIT neobsahují copyleft předpisy, a proto nejsou přijatelné pro FSF. Licence BSD a MIT jsou také označovány za tolerantní, protože jsou tolerantní v tom, jak lze software dále distribuovat, např. BSD licencovaný software můžete vzít a dále jej implementovat do vámi uzavřeného softwarového produktu.

Vývojové komunity se do velké míry nechtějí až tak hluboko zabývat niancemi mezi Open Source vs Free Sorfware. Proto se často hovoří jen o Free and Open Source softwaru (FOSS). Zkrátka, když používáte software s označením FOSS (Free / Libre / Open Source software) ,  víte, že za něj nemusíte platit a můžete jej šířit, jak budete chtít.

Další licenční modely

FOSS licence by měly být svázany se softwarem jak byly původně zamýšleny. Další autoři vydávají některá svá díla, jako např. výkresy či plány v rámci FOSS licencí, což ovšem s původním plánem těchto licencí nikterak nesouvisí.

Jakmile je software umístěn ve veřejné doméně, autor se vzdává všech práv, včetně autorského práva na práci. V některých zemích, je tento režim běžný pro díla, které vytvořily vládní agentury.

Creative Commons (CC) organizace vytvořila licencí s názvem Creative Commons, které se snaží řešit licence pro nesoftwarové entity. CC licence mohou být také použity k omezení komerčního využívání, pokud je to záměr držitele autorských práv. Mezi CC licence patří:

Více na https://creativecommons.org/

Open Source a obchodní model

Pokud nabízíte svůj software zdarma, můžete na něm také vydělat?

Nejjednodušší způsob jak vydělat peníze z vašeho softwaru je prodat jeho podporu nebo záruku. Můžete vydělávat peníze např. také tím, že poskytnete placenou službu instalace, poskytnete placenou uživatelskou podporu, nebo publikujete opravné patche za jistý poplatek. Nebo můžete být placeným konzultantem vašeho softwaru.

V roce 1990 Gerald Combs pracoval jako poskytovatel internetových služeb a začal psát svůj vlastní packetový analyzátor, protože podobné nástroje v té době byly velmi drahé. Více než 600 lidí se k projektu připojilo a nyní paří Wireshark k nejpoužívanějším analyzátorům. Tento nástroj je často považován za lepší než jiné komerční nástroje tohoto druhu. Gerald Combs později založil společnost, která zajišťovala placenou podporu včetně školení. Tato společnost byla později prodána významnému dodavateli síťových prvků, který nadále poskytuje a zajišťuje rozvoj nástroje.

K další přidané hodnotě open source patří otevřený způsob, jak posoudit něčí programátorské schopnosti. Jedna věc je, že provádíte určité úkoly v zaměstnání a druhá, že dokážete publikovat svůj výtvor a sdílet jej s celým světem. Tato cesta umožňuje potenciálním zaměstnavatelům přesvědčit se o kvalitě vaší práce. Společnosti dále zjistily, že sdílení zdrojových kódů svého interního softwaru přitahuje zájem nejenom nadšenců, ale také zájem partnerských firem.

Příkazy pro nastavení externího zdroje času pro hlavní řadič domény Active Directory:

w32tm /config /manualpeerlist:ntp.cesnet.cz,0x1 /syncfromflags:MANUAL
net stop w32time
net start w32time
w32tm /query /peers
w32tm /query /status

Samozřejmě je nutné nastavit Firewally pro řadič domény, aby se mohl dotazovat externího zdroje v internetu.

 

Pokud si uživatelé nemohou zvyknout na funkci filtrování “Nepotřebných” emilů je možné je vypnout v nastavení uživatele Outlooku webové aplikace. Pokud jako administrátor potřebujete funkci vypnout pro všechny, jedinou cestou je Powershell.

Zapnout funkci pro jednoho uživatele:

Set-Clutter -Identity user@domain.com -Enable $true

Vypnout funkci pro jednoho uživatele:

Set-Clutter -Identity user@domain.com -Enable $false

Zapnout funkci pro všechny uživatele:

Get-Mailbox | Set-Clutter -Enable $true

Vypnout funkci pro všechny uživatele:

Get-Mailbox | Set-Clutter -Enable $false

Jednoduchý příkaz pro vypsání stavu funkce (vypnuto, zapnuto) na obrazovku:

get-mailbox | get-clutter

Dále se vám může hodit skript, který vypíše stav (vypnutá, zapnutá) funkce nepotřebné pro všechny uživatele do CSV. Skript stáhnete zde.