ಕ್ಲೈಂಟ್ಗೆ ಪರಿಹಾರವನ್ನು ಮಾಡುವಾಗ, ನಾನು ಸುಂದರವಾಗಿ ಮತ್ತು ನಿಯಮಿತ ಜಬ್ಬಿಕ್ಸ್ ಕಾರ್ಯವನ್ನು ಪರಿಹರಿಸಲು ಬಯಸಿದ 2 ಕಾರ್ಯಗಳು ಹುಟ್ಟಿಕೊಂಡಿವೆ.
1 ಸವಾಲು. Mikrotik ರೂಟರ್ಗಳಲ್ಲಿ ಪ್ರಸ್ತುತ ಫರ್ಮ್ವೇರ್ ಆವೃತ್ತಿಯನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಲಾಗುತ್ತಿದೆ.
ಕಾರ್ಯವನ್ನು ಸುಲಭವಾಗಿ ಪರಿಹರಿಸಲಾಗುತ್ತದೆ - HTTP ಟೆಂಪ್ಲೇಟ್ಗೆ ಏಜೆಂಟ್ ಅನ್ನು ಸೇರಿಸುವ ಮೂಲಕ. ಏಜೆಂಟ್ Mikrotik ವೆಬ್ಸೈಟ್ನಿಂದ ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯನ್ನು ಸ್ವೀಕರಿಸುತ್ತಾರೆ ಮತ್ತು ಪ್ರಚೋದಕವು ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯನ್ನು ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯೊಂದಿಗೆ ಹೋಲಿಸುತ್ತದೆ ಮತ್ತು ವ್ಯತ್ಯಾಸದ ಸಂದರ್ಭದಲ್ಲಿ ಎಚ್ಚರಿಕೆಯನ್ನು ನೀಡುತ್ತದೆ.
ನೀವು 10 ರೂಟರ್ಗಳನ್ನು ಹೊಂದಿರುವಾಗ, ಅಂತಹ ಅಲ್ಗಾರಿದಮ್ ನಿರ್ಣಾಯಕವಲ್ಲ, ಆದರೆ 3000 ರೂಟರ್ಗಳೊಂದಿಗೆ ಏನು ಮಾಡಬೇಕು? ಸರ್ವರ್ಗೆ 3000 ವಿನಂತಿಗಳನ್ನು ಕಳುಹಿಸುವುದೇ? ಸಹಜವಾಗಿ, ಅಂತಹ ಯೋಜನೆಯು ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತದೆ, ಆದರೆ 3000 ವಿನಂತಿಗಳ ಕಲ್ಪನೆಯು ನನಗೆ ಸರಿಹೊಂದುವುದಿಲ್ಲ, ನಾನು ಇನ್ನೊಂದು ಪರಿಹಾರವನ್ನು ಕಂಡುಹಿಡಿಯಲು ಬಯಸುತ್ತೇನೆ. ಹೆಚ್ಚುವರಿಯಾಗಿ, ಅಂತಹ ಅಲ್ಗಾರಿದಮ್ನಲ್ಲಿ ಇನ್ನೂ ಒಂದು ನ್ಯೂನತೆಯಿದೆ: ಇನ್ನೊಂದು ಬದಿಯು DoS ದಾಳಿಗಾಗಿ ಒಂದು IP ಯಿಂದ ಅಂತಹ ಹಲವಾರು ವಿನಂತಿಗಳನ್ನು ಎಣಿಸಬಹುದು, ಅವರು ಅದನ್ನು ಸರಳವಾಗಿ ನಿಷೇಧಿಸಬಹುದು.
2 ಸವಾಲು. ವಿಭಿನ್ನ HTTP ಏಜೆಂಟ್ಗಳಲ್ಲಿ ದೃಢೀಕರಣ ಸೆಶನ್ ಅನ್ನು ಬಳಸುವುದು.
ಏಜೆಂಟರು HTTP ಮೂಲಕ "ಮುಚ್ಚಿದ" ಪುಟಗಳಿಂದ ಮಾಹಿತಿಯನ್ನು ಸ್ವೀಕರಿಸಬೇಕಾದಾಗ, ದೃಢೀಕರಣ ಕುಕೀ ಅಗತ್ಯವಿದೆ. ಇದನ್ನು ಮಾಡಲು, ಸಾಮಾನ್ಯವಾಗಿ "ಲಾಗಿನ್ / ಪಾಸ್ವರ್ಡ್" ಜೋಡಿಯೊಂದಿಗೆ ಪ್ರಮಾಣಿತ ದೃಢೀಕರಣ ಫಾರ್ಮ್ ಇರುತ್ತದೆ ಮತ್ತು ಕುಕೀಯಲ್ಲಿ ಸೆಷನ್ ಐಡಿಯನ್ನು ಹೊಂದಿಸುತ್ತದೆ.
ಆದರೆ ಸಮಸ್ಯೆ ಇದೆ, ಹೆಡರ್ನಲ್ಲಿ ಈ ಮೌಲ್ಯವನ್ನು ಬದಲಿಸಲು ಒಂದು HTTP ಏಜೆಂಟ್ ಐಟಂನಿಂದ ಮತ್ತೊಂದು ಐಟಂನ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಅಸಾಧ್ಯವಾಗಿದೆ.
"ವೆಬ್ ಸ್ಕ್ರಿಪ್ಟ್" ಸಹ ಇದೆ, ಇದು ಮತ್ತೊಂದು ಮಿತಿಯನ್ನು ಹೊಂದಿದೆ, ಇದು ವಿಶ್ಲೇಷಣೆಗಾಗಿ ಮತ್ತು ಹೆಚ್ಚಿನ ಉಳಿತಾಯಕ್ಕಾಗಿ ವಿಷಯವನ್ನು ಪಡೆಯಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ. ನೀವು ಪುಟಗಳಲ್ಲಿ ಅಗತ್ಯ ಅಸ್ಥಿರಗಳ ಉಪಸ್ಥಿತಿಯನ್ನು ಮಾತ್ರ ಪರಿಶೀಲಿಸಬಹುದು ಅಥವಾ ವೆಬ್ ಸ್ಕ್ರಿಪ್ಟ್ ಹಂತಗಳ ನಡುವೆ ಹಿಂದೆ ಸ್ವೀಕರಿಸಿದ ಅಸ್ಥಿರಗಳನ್ನು ರವಾನಿಸಬಹುದು.
ಈ ಕಾರ್ಯಗಳ ಬಗ್ಗೆ ಸ್ವಲ್ಪ ಯೋಚಿಸಿದ ನಂತರ, ಮಾನಿಟರಿಂಗ್ ಸಿಸ್ಟಮ್ನ ಯಾವುದೇ ಭಾಗದಲ್ಲಿ ಸಂಪೂರ್ಣವಾಗಿ ಗೋಚರಿಸುವ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ಬಳಸಲು ನಾನು ನಿರ್ಧರಿಸಿದೆ: ಟೆಂಪ್ಲೇಟ್ಗಳು, ಹೋಸ್ಟ್ಗಳು, ಟ್ರಿಗ್ಗರ್ಗಳು ಅಥವಾ ಐಟಂಗಳಲ್ಲಿ. ಮತ್ತು ನೀವು ವೆಬ್ ಇಂಟರ್ಫೇಸ್ API ಮೂಲಕ ಮ್ಯಾಕ್ರೋಗಳನ್ನು ನವೀಕರಿಸಬಹುದು.
Zabbix ಉತ್ತಮ ಮತ್ತು ವಿವರವಾದ API ದಸ್ತಾವೇಜನ್ನು ಹೊಂದಿದೆ. Api ಮೂಲಕ ಡೇಟಾ ವಿನಿಮಯಕ್ಕಾಗಿ, Json ಡೇಟಾ ಸ್ವರೂಪವನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ವಿವರಗಳನ್ನು ಕಾಣಬಹುದು ಅಧಿಕೃತ ದಸ್ತಾವೇಜನ್ನು.
ನಮಗೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವನ್ನು ಪಡೆಯಲು ಮತ್ತು ಅವುಗಳನ್ನು ಮ್ಯಾಕ್ರೋದಲ್ಲಿ ರೆಕಾರ್ಡ್ ಮಾಡಲು ಕ್ರಮಗಳ ಅನುಕ್ರಮವನ್ನು ಕೆಳಗಿನ ರೇಖಾಚಿತ್ರದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.
1 ಹೆಜ್ಜೆ
ಮೊದಲ ಹಂತವು ಒಂದೇ ಕ್ರಿಯೆ ಅಥವಾ ಬಹು ಕ್ರಿಯೆಗಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. ಎಲ್ಲಾ ಮುಖ್ಯ ತರ್ಕಗಳನ್ನು ಮೊದಲ ಹಂತಗಳಲ್ಲಿ ಹಾಕಲಾಗಿದೆ, ಮತ್ತು ಕೊನೆಯ 3 ಹಂತಗಳು ಮುಖ್ಯವಾದವುಗಳಾಗಿವೆ.
ನನ್ನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಮೊದಲ ಕಾರ್ಯಕ್ಕಾಗಿ PBX ನಲ್ಲಿ ಅಧಿಕೃತ ಕುಕೀಗಳನ್ನು ಪಡೆಯುವುದು ಮೊದಲ ಹಂತವಾಗಿದೆ. ಎರಡನೇ ಕಾರ್ಯಕ್ಕಾಗಿ, ನಾನು Mikrotik ಫರ್ಮ್ವೇರ್ನ ಪ್ರಸ್ತುತ ಆವೃತ್ತಿಯ ಸಂಖ್ಯೆಯನ್ನು ಪಡೆದುಕೊಂಡಿದ್ದೇನೆ.
ಇತ್ತೀಚಿನ ಲಭ್ಯವಿರುವ ಫರ್ಮ್ವೇರ್ ಆವೃತ್ತಿಯನ್ನು ಸ್ವೀಕರಿಸಿದಾಗ ಈ ವಿಳಾಸಗಳನ್ನು ಮೈಕ್ರೊಟಿಕ್ ಉಪಕರಣದ ಮೂಲಕ ಪ್ರವೇಶಿಸಲಾಗುತ್ತದೆ.
ಮೊದಲ ಹಂತವು ಪ್ರತಿಯೊಂದು ಪ್ರಕರಣಕ್ಕೂ ಸಂಪೂರ್ಣವಾಗಿ ವೈಯಕ್ತಿಕವಾಗಿದೆ ಮತ್ತು ಅದರ ಕೆಲಸದ ತರ್ಕವು ವಿಭಿನ್ನವಾಗಿರಬಹುದು. ಇದು ನಿಮ್ಮ ಕೆಲಸವನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ.
ವೆಬ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ, ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಪ್ರತಿಕ್ರಿಯೆ ವಿಧಾನವನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಿ. ಶೀರ್ಷಿಕೆಗಳು HTTP ಪ್ರತಿಕ್ರಿಯೆ ಅಥವಾ ಸ್ವಯಂ тело ಹೆಡರ್ ಇಲ್ಲದೆ ಪ್ರತಿಕ್ರಿಯೆ?
ದೃಢೀಕರಣ ಕುಕೀಗಳು ಅಗತ್ಯವಿದ್ದರೆ, ನಂತರ ಪ್ರತಿಕ್ರಿಯೆ ವಿಧಾನವನ್ನು ಹೊಂದಿಸಿ ಶೀರ್ಷಿಕೆಗಳು ನಕ್ಷತ್ರ ಚಿಹ್ನೆಯ ಸಂದರ್ಭದಲ್ಲಿ.
ನಿಮಗೆ ಡೇಟಾ ಅಗತ್ಯವಿದ್ದರೆ, ಮೈಕ್ರೊಟಿಕ್ ಸರ್ವರ್ ಪ್ರತಿಕ್ರಿಯೆಯಂತೆ, ಇರಿಸಿ ದೇಹ ಹೆಡರ್ ಇಲ್ಲದೆ ಪ್ರತಿಕ್ರಿಯೆ.
2 ಹೆಜ್ಜೆ
ಎರಡನೇ ಹಂತಕ್ಕೆ ಹೋಗೋಣ. ದೃಢೀಕರಣ ಅಧಿವೇಶನವನ್ನು ಪಡೆಯುವುದು:
jsonrpc ಎಂಬುದು JSON-RPC ಪ್ರೋಟೋಕಾಲ್ನ ಆವೃತ್ತಿಯಾಗಿದ್ದು ಅದನ್ನು ಬಳಸಲಾಗುತ್ತಿದೆ;
Zabbix JSON-RPC ಆವೃತ್ತಿ 2.0 ಅನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ;
ವಿಧಾನ - ಎಂದು ಕರೆಯಲ್ಪಡುವ ವಿಧಾನ;
ನಿಯತಾಂಕಗಳು - ವಿಧಾನದಿಂದ ಹಾದುಹೋಗುವ ನಿಯತಾಂಕಗಳು;
ಐಡಿ ಅನಿಯಂತ್ರಿತ ವಿನಂತಿ ಗುರುತಿಸುವಿಕೆಯಾಗಿದೆ;
ದೃಢೀಕರಣ - ಬಳಕೆದಾರ ದೃಢೀಕರಣ ಕೀ; ನಾವು ಅದನ್ನು ಇನ್ನೂ ಹೊಂದಿಲ್ಲದಿರುವುದರಿಂದ, ಅದನ್ನು ಶೂನ್ಯಕ್ಕೆ ಹೊಂದಿಸೋಣ.
API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು, ನಾನು ಸೀಮಿತ ಹಕ್ಕುಗಳೊಂದಿಗೆ ಪ್ರತ್ಯೇಕ ಖಾತೆಯನ್ನು ರಚಿಸಿದ್ದೇನೆ. ಮೊದಲನೆಯದಾಗಿ, ನಿಮಗೆ ಅಗತ್ಯವಿಲ್ಲದ ಸ್ಥಳಕ್ಕೆ ನೀವು ಪ್ರವೇಶವನ್ನು ನೀಡುವ ಅಗತ್ಯವಿಲ್ಲ. ಮತ್ತು ಎರಡನೆಯದಾಗಿ, ಆವೃತ್ತಿ 5.0 ಮೊದಲು, ಮ್ಯಾಕ್ರೋ ಮೂಲಕ ಹೊಂದಿಸಲಾದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಓದಬಹುದು. ಅದರಂತೆ, ನೀವು Zabbix ನಿರ್ವಾಹಕರ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಬಳಸಿದರೆ, ನಿರ್ವಾಹಕ ಖಾತೆಯನ್ನು ಕದಿಯಲು ಸುಲಭವಾಗುತ್ತದೆ.
ಥರ್ಡ್-ಪಾರ್ಟಿ ಸ್ಕ್ರಿಪ್ಟ್ಗಳ ಮೂಲಕ API ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡುವಾಗ ಮತ್ತು ಬದಿಯಲ್ಲಿ ರುಜುವಾತುಗಳನ್ನು ಸಂಗ್ರಹಿಸುವಾಗ ಇದು ವಿಶೇಷವಾಗಿ ನಿಜವಾಗಿರುತ್ತದೆ.
ಆವೃತ್ತಿ 5.0 ರಿಂದ ಮ್ಯಾಕ್ರೋದಲ್ಲಿ ಉಳಿಸಿದ ಪಾಸ್ವರ್ಡ್ ಅನ್ನು ಮರೆಮಾಡಲು ಒಂದು ಆಯ್ಕೆ ಇದೆ.
API ಮೂಲಕ ಡೇಟಾವನ್ನು ನವೀಕರಿಸಲು ಪ್ರತ್ಯೇಕ ಖಾತೆಯನ್ನು ರಚಿಸುವಾಗ, ನಿಮಗೆ ಅಗತ್ಯವಿರುವ ಡೇಟಾವು ವೆಬ್ ಇಂಟರ್ಫೇಸ್ ಮೂಲಕ ಲಭ್ಯವಿದೆಯೇ ಮತ್ತು ಅದನ್ನು ನವೀಕರಿಸಲು ಸಾಧ್ಯವೇ ಎಂಬುದನ್ನು ಪರೀಕ್ಷಿಸಲು ಮರೆಯದಿರಿ. ನಾನು ಪರಿಶೀಲಿಸಲಿಲ್ಲ, ಮತ್ತು ದೀರ್ಘಕಾಲದವರೆಗೆ ನನಗೆ ಅಗತ್ಯವಿರುವ ಮ್ಯಾಕ್ರೋ API ನಲ್ಲಿ ಏಕೆ ಗೋಚರಿಸುವುದಿಲ್ಲ ಎಂದು ನನಗೆ ಅರ್ಥವಾಗಲಿಲ್ಲ.
ನಾವು API ನಲ್ಲಿ ದೃಢೀಕರಣವನ್ನು ಪಡೆದ ನಂತರ, ನಾವು ಮ್ಯಾಕ್ರೋಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು ಮುಂದುವರಿಯುತ್ತೇವೆ.
3 ಹೆಜ್ಜೆ
ಹೆಸರಿನ ಮೂಲಕ ಹೋಸ್ಟ್ ಮ್ಯಾಕ್ರೋ ಅನ್ನು ನವೀಕರಿಸಲು API ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ, ನೀವು ಮೊದಲು ಮ್ಯಾಕ್ರೋ ಐಡಿಯನ್ನು ಪಡೆಯಬೇಕು. ಇದಲ್ಲದೆ, ನಿರ್ದಿಷ್ಟ ಹೋಸ್ಟ್ಗಾಗಿ ಮ್ಯಾಕ್ರೋಗಳ ಪಟ್ಟಿಯನ್ನು ಪಡೆಯಲು, ನೀವು ಈ ಹೋಸ್ಟ್ನ ID ಅನ್ನು ತಿಳಿದುಕೊಳ್ಳಬೇಕು ಮತ್ತು ಇದು ಹೆಚ್ಚುವರಿ ವಿನಂತಿಯಾಗಿದೆ. ಡೀಫಾಲ್ಟ್ ಮ್ಯಾಕ್ರೋ ಬಳಸಿ {ಹೋಸ್ಟ್ ಐಡಿ} ವಿನಂತಿಯಲ್ಲಿ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ. ನಾನು ಈ ರೀತಿಯ ನಿರ್ಬಂಧವನ್ನು ಬೈಪಾಸ್ ಮಾಡಲು ನಿರ್ಧರಿಸಿದೆ:
ನಾನು ಈ ಹೋಸ್ಟ್ನ ಐಡಿಯೊಂದಿಗೆ ಸ್ಥಳೀಯ ಮ್ಯಾಕ್ರೋವನ್ನು ರಚಿಸಿದ್ದೇನೆ. ವೆಬ್ ಇಂಟರ್ಫೇಸ್ನಿಂದ ಹೋಸ್ಟ್ ಐಡಿಯನ್ನು ಕಂಡುಹಿಡಿಯುವುದು ತುಂಬಾ ಸುಲಭ.
ನೀಡಿರುವ ಹೋಸ್ಟ್ನಲ್ಲಿನ ಎಲ್ಲಾ ಮ್ಯಾಕ್ರೋಗಳ ಪಟ್ಟಿಯೊಂದಿಗೆ ಪ್ರತಿಕ್ರಿಯೆಯನ್ನು ಮಾದರಿಯಿಂದ ಫಿಲ್ಟರ್ ಮಾಡಬಹುದು:
ಹೀಗಾಗಿ, ನಮಗೆ ಅಗತ್ಯವಿರುವ ಮ್ಯಾಕ್ರೋನ ID ಅನ್ನು ನಾವು ಎಲ್ಲಿ ಪಡೆಯುತ್ತೇವೆ MIKROTIK_VERSION ನಾವು ಹುಡುಕುತ್ತಿರುವ ಮ್ಯಾಕ್ರೋದ ಹೆಸರು. ನನ್ನ ಸಂದರ್ಭದಲ್ಲಿ, ಮ್ಯಾಕ್ರೋವನ್ನು ಹುಡುಕಲಾಗಿದೆ MIKROTIK_VERSIONಆತಿಥೇಯರಿಗೆ ನಿಯೋಜಿಸಲಾಗಿದೆ.
{mikrotik_version} ಮೊದಲ ಹಂತದಲ್ಲಿ ಪಡೆದ ಮೌಲ್ಯವಾಗಿದೆ. ನನ್ನ ಉದಾಹರಣೆಯಲ್ಲಿ, ಪ್ರಸ್ತುತ ಮೈಕ್ರೊಟಿಕ್ ಫರ್ಮ್ವೇರ್ನ ಆವೃತ್ತಿ {hostmacroid} - ಮೌಲ್ಯವನ್ನು ಮೂರನೇ ಹಂತದಲ್ಲಿ ಪಡೆಯಲಾಗಿದೆ - ನಾವು ನವೀಕರಿಸುತ್ತಿರುವ ಮ್ಯಾಕ್ರೋ ಐಡಿ.
ಸಂಶೋಧನೆಗಳು
ಪ್ರಮಾಣಿತ ಕಾರ್ಯನಿರ್ವಹಣೆಯೊಂದಿಗೆ ಸಮಸ್ಯೆಯನ್ನು ಪರಿಹರಿಸುವ ವಿಧಾನವು ಹೆಚ್ಚು ಜಟಿಲವಾಗಿದೆ ಮತ್ತು ಉದ್ದವಾಗಿದೆ. ವಿಶೇಷವಾಗಿ ನಿಮಗೆ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ತಿಳಿದಿದ್ದರೆ ಮತ್ತು ಸ್ಕ್ರಿಪ್ಟ್ನಲ್ಲಿ ಅಗತ್ಯವಾದ ತರ್ಕವನ್ನು ತ್ವರಿತವಾಗಿ ಸೇರಿಸಬಹುದು.
ಈ ವಿಧಾನದ ಸ್ಪಷ್ಟ ಪ್ರಯೋಜನವೆಂದರೆ ವಿವಿಧ ಸರ್ವರ್ಗಳ ನಡುವಿನ ಪರಿಹಾರದ "ಪೋರ್ಟಬಿಲಿಟಿ".
ನನಗೆ ವೈಯಕ್ತಿಕವಾಗಿ, HTTP ಏಜೆಂಟ್ ಮತ್ತೊಂದು ಐಟಂನ ಡೇಟಾವನ್ನು ಪ್ರವೇಶಿಸಲು ಮತ್ತು ವಿನಂತಿಯ ದೇಹ ಅಥವಾ ಹೆಡರ್ಗಳಲ್ಲಿ ಅವುಗಳನ್ನು ಬದಲಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ ಎಂಬುದು ವಿಚಿತ್ರವಾಗಿದೆ [ ZBXNEXT-5993].