System Center Operations Manager'da normal ifade desteği
Yönetim paketleri yazarken, bulmalara ve gruplara normal ifade eşleştirmesi eklemeniz gerekebilir. Normal ifadeler, izleyicilerde ve kurallarda ifade ölçütlerinde desen eşleştirme için de gerekli olabilir.
Orijinal ürün sürümü: System Center Operations Manager
Özgün KB numarası: 2702651
Operations Manager iki farklı normal ifade türünü destekler. Doğru ifadeyi seçebilmek için hangi öğede çalıştığınızı bilmeniz gerekir. Grup üyeliği hesaplaması ve ifade filtreleri, desen eşleştirme için farklı söz dizimleri kullanır.
Grup hesaplaması
Grup hesaplaması normal ifade söz dizimlerini kullanır PERL
. Varsayılan olarak, eşleşme büyük/küçük harfe duyarlı değildir, ancak XML'de özel bir öznitelik kullanarak bir ifadenin büyük/küçük harfe duyarlı olması gerektiğini belirtebilirsiniz. Daha fazla bilgi için bkz . SimpleCriteriaType.
Grup hesaplaması, modülü her kullandığınızda Group Calc
yönetim paketinizde (MP) bulunur. İfade, GroupCalc
desen eşleştirme ifadelerine göre dinamik grup üyeliği oluşturmak için işlecini kullanır MatchesRegularExpression
. Bu işlecin uygulanması, MP XML'de bulunan ifadeyi dbo.fn_MatchesRegularExpression
SQL çağrı adına geçirir. Bu çağrı 0 değerini döndürürse, eşleşme false olur.
1 değerini döndürürse, eşleşme doğrudur.
Önemli
dbo.fn_MatchesRegularExpression
SQL çağrı adının kendisi büyük/küçük harfe duyarlıdır, bu nedenle MatchesRegularExpression
dinamik grup üyeliği ölçütlerinde kullanılan işleç de büyük/küçük harfe duyarlı olur.
GroupCalc, aşağıdaki yaygın regex stili sorgularının soyut ifadelerini oluşturan iki özel alt öğeyi de destekler.
GroupCalc özel işlevleri
GroupCalc alt öğesi | MP ifadesi | Regex eşdeğeri |
---|---|---|
ContainsSubstring |
^*{O}.*$ (Wherein {O} , alt dizeyle değiştirilir) |
|
MatchesWildcard | ? |
. |
MatchesWildcard | * |
.* |
MatchesWildcard | # |
[0-9] |
Not
Bu iki özel işleçlerden biri kullanılırsa, değerlendirme her zaman büyük/küçük harfe duyarlıdır.
İfade filtresi eşleştirme ölçütleri
Yönetim paketlerinde kullanılan ifade filtreleri, .NET Framework regex ifade söz dizimlerini kullanır. Tüm ifadeler çalışmaz. Ancak, aşağıdaki .NET Framework normal ifade söz dizimi öğeleri desteklenir. İfade Değerlendirme modülünü kullandığınızda, yönetim paketinizde ifade filtreleri bulunur.
Operations Manager regex söz dizimi
Oluşturmak | Operations Manager regex |
---|---|
Herhangi bir karakter | . |
Aralıktaki karakter | [ ] |
Aralıkta olmayan karakter | [^ ] |
Satırın başlangıcı | ^ |
Satır sonu | $ |
Veya | | |
Grup | ( ) |
0 veya 1 eşleşme | ? |
0 veya daha fazla eşleşme | * |
1 veya daha fazla eşleşme | + |
Tam olarak N eşleşmesi | {n} |
En az N eşleşme | {n, } |
En fazla N eşleşme | { , n} |
N ile M Eşleşmeleri | {n, m} |
Yeni satır karakteri | \n |
Sekme karakteri | \T |
Operations Manager normal ifade (regex) örnekleri
Örnek 1
Tek bir dize içeren eşleşmeleri arayın: string1
^(string1)$
Örnek 2
İki dizeden birini içeren eşleşmeleri string1
arayın veya string2
:
^(string1)|^(string2)$
Örnek 3
İki klasör yolunun altında özyinelemeli olarak bulunan klasörlerle eşleşenleri arayın (/var/lib/string1/*
veya /var/lib/string2/*
):
^(\/var\/lib\/string1\/.*)|^(\/var\/lib\/string2\/.*)$
Örnek 4
İki dizeden birini içeren eşleşmeleri Agent1.contoso.com
arayın veya Agent2.contoso.com
(büyük/küçük harfe duyarsız):
^(?i)(agent1.contoso.com)|(?i)(agent2.contoso.com)$
(Büyük/küçük harfe duyarsız) içeren Agent
eşleşmeleri arayın:
^(?i)(agent.*)$
SDK aracılığıyla normal ifadeler
Operations Manager SDK'sı, nesneleri filtrelemek için bir Eşleşme ölçütü işlecine sahiptir. Bu işleç, daha önce bahsedilen GroupCalc olayıyla aynı işlevi MatchesCriteria
kullanır.
Operations Manager veritabanındaki nesneleri bulmak için bir ölçüt ifadesi oluşturmak için SDK'yı kullandığınızda, aşağıdaki söz dizimi öğeleri geçerli ve kullanışlıdır:
- Karşılaştırma işleçleri
- Joker karakterler
- DateTime değerleri
- Tamsayıdan XML Sabit Listesi karşılaştırmalarına
Karşılaştırma işleçleri
Ölçüt ifadesi oluştururken karşılaştırma işleçlerini kullanabilirsiniz. Geçerli işleçler aşağıdaki tabloda açıklanmıştır.
SDK karşılaştırma işleçleri
Işleç | Açıklama | Örnek(ler) |
---|---|---|
=, == | Sol ve sağ işlenenler eşitse true olarak değerlendirilir. | Name = 'mymachine.contoso.com' |
!=, <> | Sol ve sağ işlenenler eşit değilse true olarak değerlendirilir. | Name != 'mymachine.contoso.com' |
> | Sol işlenen sağ işlenenden büyükse true olarak değerlendirilir. | Severity > 0 |
< | Sol işlenen sağ işlenenden küçükse true olarak değerlendirilir. | Severity < 2 |
>= | Sol işlenen sağ işlenenden büyük veya buna eşitse true olarak değerlendirilir. | Severity >= 1 |
<= | Sol işlenen sağ işlenenden küçük veya buna eşitse true olarak değerlendirilir. | Severity <= 3 |
GİBİ | Sol işlenen, sağ işlenen tarafından tanımlanan desenle eşleşiyorsa true olarak değerlendirilir. Deseni tanımlamak için joker tablodaki karakterleri kullanın. | Name 'LIKE SQL%' Değer SQLEngine ise Name true olarak değerlendirilir. Name LIKE '%SQL%' Değer MySQLEngine ise Name true olarak değerlendirilir. |
EŞLEŞEN | Sol işlenen sağ işlenen tarafından tanımlanan normal ifadeyle eşleşiyorsa true olarak değerlendirilir. | Name MATCHES 'SQL*05' Değer SQL2005true Name olarak değerlendirilir. |
IS NULL | Sol işlenenin değeri null ise true olarak değerlendirilir. | ConnectorId IS NULL Özellik bir değer içermiyorsa ConnectorId true olarak değerlendirilir. |
NULL DEĞIL | Sol işlenenin değeri null değilse true olarak değerlendirilir. | ConnectorId IS NOT NULL Özelliği bir değer içeriyorsa true ConnectorId olarak değerlendirilir. |
INÇ | Sol işlenenin değeri sağ işlenen tarafından tanımlanan değerler listesindeyse true olarak değerlendirilir. NotIN işleci yalnızca Guid türündeki özelliklerle kullanım için geçerlidir. |
Id IN ('080F192C-52D2-423D-8953-B3EC8C3CD001', '080F192C-53B2-403D-8753-B3EC8C3CD002') Özelliğin değeri Id ifadede sağlanan iki genel benzersiz tanımlayıcıdan biriyse true olarak değerlendirilir. |
VE | Sol ve sağ işlenenlerin ikisi de doğruysa true olarak değerlendirilir. | Name = 'SQL%' AND Description LIKE 'MyData%' |
VEYA | Sol veya sağ işlenen doğruysa true olarak değerlendirilir. | Name = 'SQL%' OR Description LIKE 'MyData%' |
DEĞİL | Doğru işlenen doğru değilse true olarak değerlendirilir. | NOT (Name = 'IIS' OR Name = 'SQL') |
Joker karakter -ler
Aşağıdaki tabloda, işlecini kullanırken desen oluşturmak için kullanabileceğiniz LIKE
joker karakterler tanımlanabilir.
LIKE işleciyle kullanılan joker karakter işleçleri
Joker | Açıklama | Örnek |
---|---|---|
% | Herhangi bir sayıda karakterle eşleşen joker karakter. | Name LIKE 'SQL%' Değer SQLEngine ise Name true olarak değerlendirilir. Name LIKE '%SQL%' Değer MySQLEngine ise Name true olarak değerlendirilir. |
_ | Tek bir karakterle eşleşen joker karakter. | Name LIKE 'SQL200_' Aşağıdaki Name değerler için true olarak değerlendirilir:SQL2000 SQL2005 Not: İfade SQL200 için false olarak değerlendirilir çünkü _ simgesi değerde Name tam olarak bir karakterle eşleşmelidir. |
[] | Karakter kümesinde bulunan herhangi bir karakterle eşleşen joker karakter. Not Köşeli ayraçlar, MonitoringObject özelliklerine başvurular nitelenirken de kullanılır. Daha fazla bilgi için bkz. İzleme Nesneleri için Sorgu Tanımlama. |
Name LIKE 'SQL200[05]' Aşağıdaki Name değerler için true olarak değerlendirilir:SQL2000 SQL2005 İfade, SQL2003 için false olarak değerlendirilir. |
[^] | Karakter kümesi içine alınmamış herhangi bir karakterle eşleşen joker karakter. | Name LIKE 'SQL200[^05]' SQL2003 için true olarak değerlendirilir. İfade, SQL2000 veSQL2005 için false olarak değerlendirilir. |
DateTime karşılaştırmaları
Sorgu ifadesinde DateTime değeri kullandığınızda, değeri dize değerine dönüştürmek DateTime
için genel DateTime biçimini (G) kullanın. Örneğin:
string qStr = "TimeCreated <= '" + myInstant.ToString("G") + "'";
ManagementPackCriteria mpCriteria = new ManagementPackCriteria(qStr);
Geçerli dize karşılaştırmaları yapmak için tüm tarih değerlerini G biçimine (GMT) dönüştürün.
Sabit listeleri ile tamsayı değeri karşılaştırması
Sorgu ifadesinde bir tamsayı numaralandırma değeri kullandığınızda, numaralandırma değerini bir tamsayıya dönüştürebilirsiniz.
Örneğin:
string qStr = "Severity > " + (int)ManagementPackAlertSeverity.Warning;
MonitoringAlertCriteria alertCriteria = new MonitoringAlertCriteria(qStr);