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 Nametrue olarak değerlendirilir.

Name LIKE '%SQL%'
Değer MySQLEngine ise Nametrue 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 SQL2005trueName 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 ConnectorIdtrue 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 trueConnectorId 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 Nametrue olarak değerlendirilir.

Name LIKE '%SQL%'
Değer MySQLEngine ise Nametrue 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);

Daha fazla bilgi