เขียน Python ติดต่อกับ SolarWinds เพื่อทำ Automation

ต่อยอดความเจ๋งของ SolarWinds ด้วย Python

Nopnithi Khaokaew (Game)
2 min readFeb 4, 2020

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

— — — — — — — — — — — — — — — — — — — — — — — -

ฝากคอร์ส Python for Network Automation ผมด้วยครับ

— — — — — — — — — — — — — — — — — — — — — — — -

SolarWinds เป็น software ด้าน network monitoring แต่ว่า feature ที่มันมีใช่ว่าจะตอบโจทย์ความต้องการของเราเสมอไป ดังนั้นการเขียน code หรือ software เพื่อดึงข้อมูลจาก SolarWinds มาเพื่อทำอะไรบางอย่างก็เป็นสิ่งที่ผมหลีกเลี่ยงไม่ได้ 555

แน่นอน SolarWinds เองมี API มาให้ใช้งานครับ แต่จะเป็นการ query ข้อมูลตรงจาก database ผ่าน SolarWinds Query Language (SWQL) เลย ซึ่ง SWQL ก็เป็นภาษาที่มี structure เดียวกับ SQL แทบจะเป๊ะ (ที่จริงมันก็คือ SQL แบบ read-only ที่เค้าเตรียมมาให้นั่นแหละ)

เอาเป็นว่าเริ่มเลยแล้วกันครับ…

ติดตั้ง Python Library ที่จำเป็นเสียก่อน

pip install orionsdk
pip install requests

สร้างไฟล์ run.py ขึ้นมาแล้วใส่ code ตามนี้เลย

from orionsdk import SwisClient
from urllib3 import disable_warnings

npm_server = 'x.x.x.x' # IP หรือ hostname ของ SolarWinds
username = 'xxxx' # Username ที่ใช้ login เข้า SolarWinds
password = 'yyyy' # Password ที่ใช้ login เข้า SolarWinds

def
main():
disable_warnings()
swis = SwisClient(npm_server, username, password)
query = '''
SELECT TOP 20
NodeID,
Caption
FROM
Orion.Nodes
'''
results = swis.query(query)
for row in results['results']:
print(row)

if __name__ == '__main__':
main()

ถ้าทุกอย่างเวิร์คก็ควรจะได้ result ออกมาประมาณนี้ครับ

{'NodeID': 1, 'Caption': 'AAA'}
{'NodeID': 2, 'Caption': 'BBB'}
{'NodeID': 3, 'Caption': 'CCC'}
...
{'NodeID': 10, 'Caption': 'JJJ'}

Query อะไรได้บ้าง?

คำถามต่อมาคือแล้วเราจะรู้ได้ไงว่ามี table อะไรให้เราสามารถ query ข้อมูลออกมาได้บ้าง? คำตอบก็คือให้คุณดาวน์โหลด SWQL Studio จากลิงค์ด้านล่างนี้เลย

โดยให้เลือกเวอร์ชั่นล่าสุด ซึ่งไฟล์ติดตั้งจะชื่อ OrionSDK.msi และเมื่อติดตั้งเสร็จให้ login เข้าไปด้วย username และ password ของคุณ

เมื่อ login เข้าไปแล้วสังเกตตรงด้านซ้ายมือของ SWQL Studio ครับ จะเขียนว่า Object Explorer ตรงนั้นเนี่ยจะเป็น object หรือ table ทั้งหมดที่เราสามารถ query ข้อมูลออกมาได้

และโปรแกรมนี้เองก็สามารถใช้ในการ query เพื่อ test ก่อนที่จะนำ SWQL command ไปใช้ใน code ของเราได้นะครับ (ถ้าจาก code ตัวอย่างของผมก็เอาไปแทนที่ตรงตัวแปร query)

จากรูปด้านบนนี้ผมลอง query ข้อมูลทั้งหมดจาก NCM.Nodes ผ่าน SWQL Studio ครับ ซึ่งเป็น information เบื้องต้นของ node ทั้งหมดใน SolarWinds NCM นั่นเอง

อ้อ SWQL Functions ที่ใช้ได้ก็ดูตามนี้เลยครับ
https://github.com/solarwinds/OrionSDK/wiki/SWQL-Functions

ที่เหลือนั้นก็สุดแท้แต่ skill ด้าน Python และ SQL ของแต่ละท่านแล้วหละ…

— — — — — — — — — — — — — — —
สารบัญเนื้อหาทั้งหมด (My Contents)
— — — — — — — — — — — — — — —

--

--

Nopnithi Khaokaew (Game)
Nopnithi Khaokaew (Game)

Written by Nopnithi Khaokaew (Game)

Cloud Solutions Architect & Hobbyist Developer | 6x AWS Certified, CKA, CKAD, 2x HashiCorp Certified (Terraform, Vault), etc.