Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
0b4ae61c12 | |||
1d1d14c656 |
@ -1,12 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#040000;}
|
|
||||||
</style>
|
|
||||||
<g>
|
|
||||||
<path class="st0" d="M47,33.2c0-1.6-1.3-3-3-3c-1.6,0-3,1.3-3,3c0,1.3,0.9,2.4,2.1,2.8H43v5.2c0,1.1-0.9,1.8-2,1.8H7 		c-1.1,0-2-0.7-2-1.8V24.1c0,0,0,0,0,0s0,0,0,0V24h0c-0.1-0.5-0.5-0.9-1-0.9S3,23.5,3,24h0v0.1c0,0,0,0,0,0s0,0,0,0v17.1 		C3,43.4,4.8,45,7,45H41c2.2,0,4-1.6,4-3.8V36h-0.1C46.1,35.6,47,34.5,47,33.2z M44,35.2c-1.1,0-2-0.9-2-2s0.9-2,2-2 		c1.1,0,2,0.9,2,2S45.1,35.2,44,35.2z"/>
|
|
||||||
<path class="st0" d="M6.9,14.2c0-1.3-0.8-2.4-2-2.8V7.2C5,6.1,5.9,5,7,5H41c1.1,0,2,1.1,2,2.2V24h0c0,0,0,0.1,0,0.1 		c0,0.6,0.4,1,1,1c0.6,0,1-0.4,1-1c0,0,0-0.1,0-0.1h0V7.2C45,5,43.2,3,41,3H7C4.8,3,3,5,3,7.2v4.2c-1.1,0.4-2,1.5-2,2.8 		c0,1.6,1.3,3,3,3S6.9,15.8,6.9,14.2z M2,14.2c0-1.1,0.9-2,2-2s2,0.9,2,2s-0.9,2-2,2S2,15.2,2,14.2z"/>
|
|
||||||
<polygon class="st0" points="36,30 37,30 37,23.5 37,22.4 37,18 37,17 36.5,17 36,17 	"/>
|
|
||||||
<path class="st0" d="M25.3,17h-0.5H24v13h1v-6h6.6c1.3,0,2.4-1.6,2.4-3v-1.4c0-1.4-1.1-2.6-2.4-2.6H25.3z M33,19.6V21 		c0,0.8-0.7,2-1.4,2H25v-5h6.6C32.3,18,33,18.8,33,19.6z"/>
|
|
||||||
<path class="st0" d="M17.3,17h-1.1c-2,0-2.6,1.8-2.8,2.4L11,30h1.1l1.4-6H20v0l1.4,6h1.1l-2.3-10.6C19.9,18.8,19.3,17,17.3,17z 		 M19.8,23h-6.1l0.7-3.3c0.4-1.2,1-1.7,2-1.7H17c1,0,1.6,0.5,2,1.8L19.8,23z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.5 KiB |
@ -1,3 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<path d="M42,21.1c-0.6,0-1,0.4-1,1v10c0,1.5-1.2,3.4-2.6,4.2l-12.8,7.1c-1.4,0.8-3.8,0.8-5.2,0L7.6,36.3C6.2,35.5,5,33.6,5,32.1 	V17.9c0-1.5,1.2-3.4,2.6-4.2l12.8-7.1c1.4-0.8,3.8-0.8,5.2,0c0.5,0.3,1.1,0.1,1.4-0.4s0.1-1.1-0.4-1.4c-2-1.1-5.2-1.1-7.2,0 	L6.6,11.9C4.5,13,3,15.6,3,17.9v14.2c0,2.3,1.5,4.8,3.6,6l12.8,7.1c1,0.6,2.3,0.8,3.6,0.8s2.6-0.3,3.6-0.8l12.8-7.1 	c2.1-1.1,3.6-3.7,3.6-6v-10C43,21.6,42.6,21.1,42,21.1z M44.9,10.6l-2-2c-0.2-0.2-0.5-0.2-0.7,0l-2,2c-0.2,0.2-0.2,0.5,0,0.7l2,2 	c0.1,0.1,0.2,0.1,0.4,0.1c0.2,0,0.3,0,0.4-0.1l2-2C45,11.2,45,10.8,44.9,10.6z M30.5,14.2c0.1,0.1,0.2,0.1,0.4,0.1 	c0.2,0,0.3-0.1,0.4-0.1l1.1-1.1l2.1,2.1l-1.2,1.2c-0.2,0.2-0.2,0.5,0,0.7l1.1,1.1l-2.9,1.6l-8.3-4.7c-0.2-0.1-0.3-0.1-0.5,0 	l-8.5,4.8c-0.2,0.1-0.3,0.3-0.3,0.4v9.5c0,0.2,0.1,0.3,0.3,0.4l8.5,4.8c0.1,0,0.2,0.1,0.2,0.1s0.2,0,0.2-0.1l8.5-4.8 	c0.2-0.1,0.3-0.3,0.3-0.4v-9.2l3.1-1.7l1,1c0.1,0.1,0.2,0.1,0.4,0.1c0.2,0,0.3,0,0.4-0.1l2.8-2.8c0.2-0.2,0.2-0.5,0-0.7l-2.8-2.8 	c-0.2-0.2-0.5-0.2-0.7,0l-0.9,0.9L33,12.4l1.1-1.1c0.1-0.1,0.1-0.2,0.1-0.4c0-0.1-0.1-0.3-0.1-0.4l-1-1l2-2l1.1,1.1 	c0.1,0.1,0.2,0.1,0.4,0.1c0.2,0,0.3-0.1,0.4-0.1l2.8-2.8c0.2-0.2,0.2-0.5,0-0.7L37,2.3c-0.2-0.2-0.5-0.2-0.7,0l-3,2.7 	c-0.2,0.2-0.2,0.5,0,0.7l1.1,1.1l-2,2l-1.1-1.1c-0.2-0.2-0.5-0.2-0.7,0l-2.8,2.8c-0.2,0.2-0.2,0.5,0,0.7L30.5,14.2z M22.5,33.6 	L15,29.5v-8.3l7.5,4.2V33.6z M23,24.4l-7.5-4.2L23,16l7.5,4.2L23,24.4z M31,29.5l-7.5,4.2v-8.3l7.5-4.2V29.5z M36.5,14.6l2.1,2.1 	l-2.1,2.1l-2.1-2.1L36.5,14.6z M36.5,3.2l2.1,2.1l-2.1,2.1L35.1,6l-0.7-0.7L36.5,3.2z M30.8,8.9L33,11l-2.1,2.1L28.7,11L30.8,8.9z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1,3 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<path d="M34.9,19.8c0.1,0.1,0.2,0.2,0.4,0.2h5.3c0.2,0,0.3-0.1,0.4-0.2l2.6-4.5c0.1-0.1,0.1-0.3,0-0.4l-2.6-4.5 	C41,10.1,40.8,10,40.6,10h-5.3c-0.2,0-0.3,0.1-0.4,0.2l-2.6,4.5c-0.1,0.1-0.1,0.3,0,0.4L34.9,19.8z M35.6,10.9h4.7l2.4,4.1l-2.4,4.1 	h-4.7L33.3,15L35.6,10.9z M44.8,4.3l-2-1.2c-0.2-0.1-0.4-0.1-0.5,0l-2,1.2C40.1,4.4,40,4.6,40,4.8v2.5c0,0.2,0.1,0.3,0.2,0.4l2,1.2 	C42.3,9,42.4,9,42.5,9s0.2,0,0.3-0.1l2-1.2C44.9,7.6,45,7.4,45,7.2V4.8C45,4.6,44.9,4.4,44.8,4.3z M44,7l-1.5,0.9L41,7V5l1.5-0.9 	L44,5V7z M21.3,14.8c0.1,0.2,0.3,0.2,0.4,0.2h6.6c0.2,0,0.3-0.1,0.4-0.3l3.2-5.5c0.1-0.2,0.1-0.3,0-0.5l-3.2-5.5 	C28.7,3.1,28.5,3,28.3,3h-6.6c-0.2,0-0.3,0.1-0.4,0.2l-3.3,5.5c-0.1,0.2-0.1,0.4,0,0.5L21.3,14.8z M22.1,4h6l2.9,5L28,14H22l-2.9-5 	L22.1,4z M39.9,23.5c-0.2-0.3-0.5-0.5-0.9-0.5h-7.3l-3.6-6.5C28,16.2,27.7,16,27.3,16H20l-3.6-6.5C16.2,9.2,15.9,9,15.5,9H7.7 	C7.3,9,7,9.2,6.8,9.5l-3.7,7c-0.2,0.3-0.2,0.7,0,1l3.4,6L3.1,30c-0.1,0.3-0.2,0.6,0,0.9l3.7,7.5C6.9,38.8,7.3,39,7.7,39H15l3.6,5.5 	c0.2,0.3,0.5,0.5,0.8,0.5h7.9c0.3,0,0.7-0.2,0.8-0.5l3.6-5.5h7.3c0.4,0,0.7-0.2,0.9-0.5l3.9-7c0.2-0.3,0.2-0.7,0-1L39.9,23.5z 	 M26.7,18l3.6,6.5c0,0,0,0,0,0L27,30h-7.3l-3.6-6.4l3.4-5.6H26.7z M5.1,17l3.1-6h6.7l3.6,6.5c0,0,0,0,0,0L15.3,23H8.6c0,0,0,0,0,0 	L5.1,17z M8.3,37l-3.2-6.5L8.5,24h6.7l3.7,6.5L15.4,37H8.3z M30.4,37.5L26.8,43H20l-3.6-5.5c0,0,0,0,0-0.1l3.4-6.4H27L30.4,37.5 	C30.4,37.4,30.4,37.4,30.4,37.5z M38.5,37h-7.1l-3.5-6.5l3.3-5.5h7.3l3.4,6L38.5,37z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.7 KiB |
@ -1,12 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 44 44" style="enable-background:new 0 0 44 44;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<g>
|
|
||||||
<path d="M28.5,21.3c0.3,0,0.5-0.2,0.5-0.5v-9.5c0-2.2,1.8-4,4-4c0,0,0,0,0.1,0c0.2,0.9,1,1.5,1.9,1.5c1.1,0,2-0.9,2-2 		c0-1.1-0.9-2-2-2c-0.9,0-1.7,0.6-1.9,1.5c0,0,0,0-0.1,0c-2.8,0-5,2.2-5,5v9.5C28,21.1,28.2,21.3,28.5,21.3z M35,5.8 		c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1s-1-0.4-1-1C34,6.3,34.4,5.8,35,5.8z"/>
|
|
||||||
<path d="M16,34.8v-5c0-0.3-0.2-0.5-0.5-0.5S15,29.5,15,29.8v5c0,0.3,0.2,0.5,0.5,0.5S16,35,16,34.8z"/>
|
|
||||||
<path d="M29,34.8v-5c0-0.3-0.2-0.5-0.5-0.5S28,29.5,28,29.8v5c0,0.3,0.2,0.5,0.5,0.5S29,35,29,34.8z"/>
|
|
||||||
<path d="M22.5,37.5v-5c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5v5c0,0.3,0.2,0.5,0.5,0.5S22.5,37.7,22.5,37.5z"/>
|
|
||||||
<path d="M21.5,7.9v15.5c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5V7.9c1.1-0.2,2-1.2,2-2.4C24.5,4.1,23.4,3,22,3s-2.5,1.1-2.5,2.5 		C19.5,6.7,20.4,7.7,21.5,7.9z M22,4c0.8,0,1.5,0.7,1.5,1.5S22.8,7,22,7s-1.5-0.7-1.5-1.5S21.2,4,22,4z"/>
|
|
||||||
<path d="M9.5,8.8c0.9,0,1.7-0.6,1.9-1.5c2,0.2,3.6,1.9,3.6,4v9.5c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5v-9.5c0-2.6-2-4.7-4.6-5 		c-0.2-0.9-1-1.5-1.9-1.5c-1.1,0-2,0.9-2,2C7.5,7.9,8.4,8.8,9.5,8.8z M9.5,5.8c0.6,0,1,0.4,1,1c0,0.6-0.4,1-1,1s-1-0.4-1-1 		C8.5,6.3,8.9,5.8,9.5,5.8z"/>
|
|
||||||
<path d="M39,17.3l-6.3-3.7l0,0c-0.2-0.1-0.4-0.2-0.6-0.2c-0.6,0-1,0.4-1,1c0,0.4,0.2,0.6,0.5,0.8l0,0l5.9,3.5l-14,8.2 		c-0.7,0.4-2.1,0.4-2.8,0l-14-8.2l5.7-3.3l0,0c0.3-0.2,0.5-0.5,0.5-0.8c0-0.6-0.4-1-1-1c-0.2,0-0.4,0.1-0.6,0.2l0,0L5,17.3 		c-1.3,0.8-1.3,2.1,0,2.8l14.6,8.5c1.3,0.8,3.5,0.8,4.9,0L39,20.2C40.3,19.4,40.3,18.1,39,17.3z"/>
|
|
||||||
<path d="M31.5,31.1C31.4,31,31.3,31,31.2,31c-0.3,0-0.5,0.2-0.5,0.5c0,0.2,0.1,0.3,0.2,0.4c1.3,1,2.1,2.1,2.1,3.3 		c0,3.1-4.9,5.8-11,5.8s-11-2.7-11-5.8c0-1.2,0.8-2.4,2.1-3.3c0.1-0.1,0.2-0.2,0.2-0.4c0-0.3-0.2-0.5-0.5-0.5c-0.1,0-0.2,0-0.3,0.1 		c-1.6,1.1-2.5,2.6-2.5,4.1C10,39,15.4,42,22,42s12-3,12-6.8C34,33.7,33.1,32.2,31.5,31.1z"/>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.1 KiB |
@ -1,12 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#060001;}
|
|
||||||
.st1{fill:#040000;}
|
|
||||||
.st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
|
|
||||||
.st3{fill:#221815;}
|
|
||||||
.st4{fill:#080102;}
|
|
||||||
.st5{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
|
||||||
.st6{fill:#070001;}
|
|
||||||
</style>
|
|
||||||
<path d="M45.4,16L37.6,3.9c-0.7-1.2-2-1.9-3.5-1.9H20.2c-1.4,0-2.9,0.8-3.6,2L2.5,27.9c-0.7,1.3-0.7,2.9,0.1,4.1l7.8,12.1 	c0.7,1.2,2,1.9,3.5,1.9h13.9c1.4,0,2.9-0.8,3.6-2l14.1-23.9C46.2,18.8,46.2,17.2,45.4,16z M29.6,43c-0.4,0.6-1,1-1.7,1h-14 	c-0.7,0-1.3-0.4-1.7-0.9L4.4,31c-0.4-0.6-0.4-1.4,0-2.1l5.6-9.6c0.1,0.5,0.3,1,0.5,1.5L17.6,32c0.7,1.2,2,1.9,3.6,1.9c0,0,0,0,0.1,0 	l12.7-0.2c0.5,0,1-0.1,1.4-0.3L29.6,43z M36.6,30.7l-0.2,0.4c-0.5,0.9-1.5,1.6-2.7,1.6L21,32.9h-0.1c-1.1,0-2-0.6-2.7-1.5l-7-11.2 	c-0.6-0.9-0.6-2-0.1-3l0.2-0.4c0.5-0.9,1.5-1.6,2.7-1.6L26.8,15h0.1c1.1,0,2,0.6,2.7,1.5l7,11.2C37.1,28.7,37.2,29.8,36.6,30.7z 	 M43.6,19.1L38,28.7c-0.1-0.5-0.3-1-0.5-1.5L30.4,16c-0.7-1.2-2-1.9-3.6-1.9c0,0,0,0-0.1,0l-12.7,0.2c-0.5,0-1,0.1-1.4,0.3L18.4,5 	c0.4-0.6,1-1,1.7-1H34c0.7,0,1.3,0.4,1.7,0.9L43.6,17C44,17.7,44,18.4,43.6,19.1z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.4 KiB |
@ -1,10 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#060001;}
|
|
||||||
.st1{fill:#040000;}
|
|
||||||
.st2{fill:#221815;}
|
|
||||||
.st3{fill:#080102;}
|
|
||||||
.st4{fill:#070001;}
|
|
||||||
</style>
|
|
||||||
<path class="st3" d="M20.4,17.6l3.2,1.8c0.1,0.1,0.3,0.1,0.4,0.1c0.2,0,0.3,0,0.4-0.1l3.2-1.8c0.3-0.1,0.4-0.5,0.4-0.7v-3.7 	c0-0.3-0.2-0.6-0.4-0.7l-3.2-1.8c-0.2-0.1-0.6-0.1-0.8,0l-3.2,1.8c-0.3,0.1-0.4,0.5-0.4,0.7v3.7C20,17.2,20.2,17.5,20.4,17.6z 	 M21,13.3l3-1.8l3,1.8v3.5l-3,1.8l-3-1.8V13.3z M14.9,28.3h-2.8c-1.2,0-2.1,1-2.1,2.1v2.9c0,1.2,0.9,2.1,2.1,2.1h2.8 	c1.2,0,2.1-1,2.1-2.1v-2.9C17,29.3,16.1,28.3,14.9,28.3z M16,33.4L16,33.4c0,0.6-0.5,1.1-1.1,1.1h-2.8c-0.6,0-1.1-0.5-1.1-1.1v-2.9 	c0-0.6,0.5-1.1,1.1-1.1h2.8c0.6,0,1.1,0.5,1.1,1.1V33.4z M24,20.7c-0.3,0-0.5,0.2-0.5,0.5v5.7c0,0.3,0.2,0.5,0.5,0.5 	s0.5-0.2,0.5-0.5v-5.7C24.5,20.9,24.3,20.7,24,20.7z M41.6,11L26.3,2.5c-1.3-0.7-3.4-0.7-4.7,0L6.4,11C5,11.8,4,13.5,4,15v18 	c0,1.5,1,3.2,2.4,4l15.3,8.5c0.6,0.4,1.5,0.6,2.3,0.6s1.7-0.2,2.3-0.6l15.3-8.5c1.3-0.7,2.4-2.5,2.4-4V15C44,13.5,43,11.8,41.6,11z 	 M41.9,33c0,0.8-0.6,1.8-1.3,2.2l-15.3,8.5c-0.7,0.4-2,0.4-2.6,0L7.4,35.2c-0.7-0.4-1.3-1.4-1.3-2.2V15c0-0.8,0.6-1.8,1.3-2.2 	l15.3-8.5C23,4.1,23.5,4,24,4s1,0.1,1.3,0.3l15.3,8.5c0.7,0.4,1.3,1.4,1.3,2.2V33z M35.9,28.3h-2.8c-1.2,0-2.1,1-2.1,2.1v2.9 	c0,1.2,0.9,2.1,2.1,2.1h2.8c1.2,0,2.1-1,2.1-2.1v-2.9C38,29.3,37.1,28.3,35.9,28.3z M37,33.4c0,0.6-0.5,1.1-1.1,1.1h-2.8 	c-0.6,0-1.1-0.5-1.1-1.1v-2.9c0-0.6,0.5-1.1,1.1-1.1h2.8c0.6,0,1.1,0.5,1.1,1.1V33.4z M34.5,27.3c0.1,0,0.2,0,0.2-0.1 	c0.2-0.1,0.3-0.5,0.2-0.7c-0.1-0.2-2.5-4.5-6.7-6.8c-0.2-0.1-0.5,0-0.7,0.2c-0.1,0.2,0,0.6,0.2,0.7c3.9,2.2,6.3,6.4,6.3,6.5 	C34.2,27.2,34.3,27.3,34.5,27.3z M25.4,28.3h-2.8c-1.2,0-2.1,1-2.1,2.1v2.9c0,1.2,0.9,2.1,2.1,2.1h2.8c1.2,0,2.1-1,2.1-2.1v-2.9 	C27.5,29.3,26.6,28.3,25.4,28.3z M26.5,33.4L26.5,33.4c0,0.6-0.5,1.1-1.1,1.1h-2.8c-0.6,0-1.1-0.5-1.1-1.1v-2.9 	c0-0.6,0.5-1.1,1.1-1.1h2.8c0.6,0,1.1,0.5,1.1,1.1V33.4z M19.8,19.7c-4.1,2.3-6.6,6.7-6.7,6.8c-0.1,0.2-0.1,0.6,0.2,0.7 	c0.1,0,0.2,0.1,0.2,0.1c0.2,0,0.3-0.1,0.4-0.3c0,0,2.4-4.3,6.3-6.5c0.2-0.1,0.3-0.4,0.2-0.7C20.3,19.7,20,19.6,19.8,19.7z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 2.4 KiB |
@ -1,12 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#060001;}
|
|
||||||
.st1{fill:#040000;}
|
|
||||||
.st2{fill:none;stroke:#000000;stroke-miterlimit:10;}
|
|
||||||
.st3{fill:#221815;}
|
|
||||||
.st4{fill:#080102;}
|
|
||||||
.st5{fill:none;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;}
|
|
||||||
.st6{fill:#070001;}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M27,24.2c0.5-0.7,0.8-1.5,0.8-2.5c0-2.1-1.7-4-4-4s-3.9,1.8-3.9,4s1.7,4,4,4c0.9,0,1.7-0.3,2.4-0.8l1.5,1.4 	c0.1,0.1,0.2,0.1,0.3,0.1c0.1,0,0.3-0.1,0.4-0.2c0.2-0.2,0.2-0.5,0-0.7L27,24.2z M23.9,24.7c-1.6,0-3-1.3-3-3c0-1.6,1.3-3,3-3 	s3,1.3,3,3C26.8,23.4,25.5,24.7,23.9,24.7z M31,18.5c-1.1-2.9-3.9-4.7-7-4.7c-3.1,0-5.9,1.8-7,4.7c-3.7,0.5-6.4,3.7-6.4,7.4 	c0,4.1,3.4,7.5,7.5,7.5h12.6c0.1,0,0.2,0,0.2-0.1c3.6-0.5,6.4-3.6,6.4-7.4C37.4,22,34.7,19,31,18.5z M31.2,32.1v-4.5 	c0-0.3-0.2-0.5-0.5-0.5c-0.3,0-0.5,0.2-0.5,0.5v4.6h-3.1v-2.6c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.2-0.5,0.5v2.6H23v-4 	c0-0.3-0.2-0.5-0.5-0.5S22,28,22,28.2v4h-3.1v-2.8c0-0.3-0.2-0.5-0.5-0.5s-0.5,0.3-0.5,0.5v2.8c-3.4-0.2-6.2-3-6.2-6.4 	c0-3.3,2.5-6,5.8-6.3c0.2,0,0.4-0.2,0.4-0.3c0.9-2.6,3.4-4.3,6.2-4.3c2.8,0,5.2,1.7,6.2,4.3c0.1,0.2,0.2,0.3,0.4,0.3 	c3.3,0.4,5.8,3.1,5.8,6.3C36.4,28.9,34.2,31.5,31.2,32.1z M41.6,11L26.3,2.5c-1.3-0.7-3.4-0.7-4.7,0L6.4,11C5,11.8,4,13.5,4,15v18 	c0,1.5,1,3.2,2.4,4l15.3,8.5c0.6,0.4,1.5,0.6,2.3,0.6s1.7-0.2,2.3-0.6l15.3-8.5c1.3-0.7,2.4-2.5,2.4-4V15C44,13.5,43,11.8,41.6,11z 	 M41.9,33c0,0.8-0.6,1.8-1.3,2.2l-15.3,8.5c-0.7,0.4-2,0.4-2.6,0L7.4,35.2c-0.7-0.4-1.3-1.4-1.3-2.2V15c0-0.8,0.6-1.8,1.3-2.2 	l15.3-8.5C23,4.1,23.5,4,24,4s1,0.1,1.3,0.3l15.3,8.5c0.7,0.4,1.3,1.4,1.3,2.2V33z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.9 KiB |
@ -1,6 +0,0 @@
|
|||||||
<svg version="1.1" id="图层_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 48 48" style="enable-background:new 0 0 48 48;" xml:space="preserve" width="132px" height="132px">
|
|
||||||
<style type="text/css">
|
|
||||||
.st0{fill:#252B3A;}
|
|
||||||
</style>
|
|
||||||
<path class="st0" d="M18.1,39c0,0.6-0.4,1-1,1h-2.8C7.5,40,2,34.5,2,27.8c0-6,4.4-11.1,10.3-12.1C14.1,11.1,18.6,8,23.6,8 	c4.8,0,9.1,2.8,11.1,7.1c0.2,0.5,0,1.1-0.5,1.3c-0.5,0.2-1.1,0-1.3-0.5c-1.7-3.6-5.3-6-9.3-6c-4.4,0-8.2,2.8-9.7,6.9 	c-0.1,0.4-0.5,0.6-0.8,0.7C7.9,18.1,4,22.5,4,27.8C4,33.4,8.6,38,14.2,38H17C17.6,38,18.1,38.4,18.1,39z M46,32.4v5.2 	c0,1.3-1.1,2.4-2.4,2.4H23.4c-1.3,0-2.4-1.1-2.4-2.4v-5.2c0-1.3,1.1-2.4,2.4-2.4H38v-1.6c0-0.8,0.6-1.4,1.4-1.4h0.1v-2.5 	c0-0.3,0.2-0.5,0.5-0.5s0.5,0.2,0.5,0.5V27h0.1c0.8,0,1.4,0.6,1.4,1.4V30h1.6C44.9,30,46,31.1,46,32.4z M39,30h2v-1.6 	c0-0.2-0.2-0.4-0.4-0.4h-1.3c-0.2,0-0.4,0.2-0.4,0.4V30H39z M45,32.4c0-0.8-0.6-1.4-1.4-1.4H23.4c-0.8,0-1.4,0.6-1.4,1.4v5.2 	c0,0.8,0.6,1.4,1.4,1.4h20.2c0.8,0,1.4-0.6,1.4-1.4V32.4z M40,34c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S40.6,34,40,34z M25.5,33 	c-0.3,0-0.5,0.2-0.5,0.5v3c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5v-3C26,33.2,25.8,33,25.5,33z M28.5,33c-0.3,0-0.5,0.2-0.5,0.5v3 	c0,0.3,0.2,0.5,0.5,0.5s0.5-0.2,0.5-0.5v-3C29,33.2,28.8,33,28.5,33z M31.5,33c-0.3,0-0.5,0.2-0.5,0.5v3c0,0.3,0.2,0.5,0.5,0.5 	s0.5-0.2,0.5-0.5v-3C32,33.2,31.8,33,31.5,33z M36.5,20.1c2-2,5.1-2,7.1,0c0.2,0.2,0.5,0.2,0.7,0s0.2-0.5,0-0.7 	c-2.4-2.3-6.1-2.3-8.5,0c-0.2,0.2-0.2,0.5,0,0.7C36,20.3,36.2,20.3,36.5,20.1z M38.7,21.5c-0.2,0.2-0.2,0.5,0,0.7s0.5,0.2,0.7,0 	c0.4-0.4,1-0.4,1.4,0c0.2,0.2,0.5,0.2,0.7,0s0.2-0.5,0-0.7C40.7,20.6,39.3,20.6,38.7,21.5z"/>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.7 KiB |
@ -138,7 +138,6 @@ Regions and Endpoints
|
|||||||
| Object Storage Service | eu-de | eu-de | obs.eu-de.otc.t-systems.com | HTTPS |
|
| Object Storage Service | eu-de | eu-de | obs.eu-de.otc.t-systems.com | HTTPS |
|
||||||
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
||||||
| | eu-de | eu-de | swift.eu-de.otc.t-systems.com | HTTPS |
|
| | eu-de | eu-de | swift.eu-de.otc.t-systems.com | HTTPS |
|
||||||
| | | | (Deprecated) | |
|
|
||||||
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
||||||
| | eu-nl | eu-nl | obs.eu-nl.otc.t-systems.com | HTTPS |
|
| | eu-nl | eu-nl | obs.eu-nl.otc.t-systems.com | HTTPS |
|
||||||
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
+-------------------------------+-------------------------------+-------------------------------+-------------------------------+-------------------------------+
|
||||||
|
@ -16,6 +16,8 @@ The following code shows how to sign a request and how to use an HTTP client to
|
|||||||
|
|
||||||
- **AccessServiceImpl**: implementation of the access method. The code required for API Gateway communication is included in the access method.
|
- **AccessServiceImpl**: implementation of the access method. The code required for API Gateway communication is included in the access method.
|
||||||
|
|
||||||
|
You can download the sample code package from https://apig-demo.obsEndpoint/java/SdkDemo.zip.
|
||||||
|
|
||||||
You can download the sample code package from https://apig-demo.obs.eu-de.otc.t-systems.com/java/SdkDemo.zip.
|
You can download the sample code package from https://apig-demo.obs.eu-de.otc.t-systems.com/java/SdkDemo.zip.
|
||||||
|
|
||||||
.. important::
|
.. important::
|
||||||
|
@ -28,83 +28,4 @@ EpMon or by Grafana.
|
|||||||
- "EpMon alerts" provide information about failed endpoint queries with details
|
- "EpMon alerts" provide information about failed endpoint queries with details
|
||||||
of the request in curl form and the respective error response details
|
of the request in curl form and the respective error response details
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: training_images/alerta_dashboard.png
|
.. image:: training_images/alerta_dashboard.png
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Alerts in Alerta are organized in environment tabs based on OTC regions.
|
|
||||||
|
|
||||||
- PRODUCTION EU-DE
|
|
||||||
- PRODUCTION EU-NL
|
|
||||||
- HYBRID-SWISS
|
|
||||||
- ALL
|
|
||||||
|
|
||||||
Every single alert shows 3 views:
|
|
||||||
|
|
||||||
- **Details** - all alert parameters are shown on the single views
|
|
||||||
- **History** - occurrences of the alert in time (without de-duplication)
|
|
||||||
- **Data** - extracted error message from the event
|
|
||||||
|
|
||||||
|
|
||||||
Alert object consists of the following fields:
|
|
||||||
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| Alert Field | Description |
|
|
||||||
+======================+========================================================================================================================================+
|
|
||||||
| **Alert ID** | Reference to alert in Alerta |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Create Time** | Timestamp of alert creation |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Service** | Information about affected service and type of monitoring |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Environment** | Information about affected environment/region |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Resource** | Further details in which particular resource issue has happened |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Event** | Short description of error result |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Correlate** | Currently not in use |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Group** | Further categorization of alerts (currently not used) |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Severity** | Critical - EpMon, Major - ApiMon |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Status** | - **Open** - default status when alert is received in Alerta |
|
|
||||||
| | - **Ack** - Acknowledged status, indicating that the incident of the service or of the host has been taken into account by a user. |
|
|
||||||
| | - **Shelve** - change alert status to shelved which removes the alerts from the active console and prevents any further notifications. |
|
|
||||||
| | - **Close** - change alert status to closed |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Value** | Same like Event field |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Text** | Currently not in use |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Trend Indication** | Currently not in use |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Timeout** | Time after which alert disappears from Alerta (default is 24h) |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Type** | - Apimon Executor Alert - ApiMon related events |
|
|
||||||
| | - Exception Alert - EpMon related events |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Duplicate count** | De-duplication feature - number of re-occurring same alerts |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Repeat** | If duplicateCount is 0 or the alert status has changed then repeat is False, otherwise it is True |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Origin** | Information about origin location from where the job has been executed |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Tags** | Further details in which particular resource issue has happened |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Log Url** | Reference to job execution output on Swift object storage (only for ApiMon alerts) |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **Log Url Web** | Reference to job execution output on Swift object storage (only for ApiMon alerts) |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
| **State** | - Present - if alert is still actual |
|
|
||||||
| | - Present - if alert is not occurring anymore |
|
|
||||||
+----------------------+----------------------------------------------------------------------------------------------------------------------------------------+
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: training_images/alerta_detail.jpg
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,5 +18,4 @@ Apimon Training
|
|||||||
logs
|
logs
|
||||||
difference_cmo_fmo
|
difference_cmo_fmo
|
||||||
contact
|
contact
|
||||||
recorded_session
|
|
||||||
faq/index
|
faq/index
|
||||||
|
@ -1,14 +0,0 @@
|
|||||||
.. _recorded_session:
|
|
||||||
|
|
||||||
================
|
|
||||||
Recorded Session
|
|
||||||
================
|
|
||||||
|
|
||||||
Session from 26.05.2023 has been recorded and videos are available on OBS.
|
|
||||||
|
|
||||||
`Part 1 <https://apimon-training.obs.eu-de.otc.t-systems.com/API_MON_part_1.mkv>`_
|
|
||||||
|
|
||||||
`Part 2 <https://apimon-training.obs.eu-de.otc.t-systems.com/API_MON_part_2.mkv>`_
|
|
||||||
|
|
||||||
`Part 3 <https://apimon-training.obs.eu-de.otc.t-systems.com/API_MON_part_3.mkv>`_
|
|
||||||
|
|
Before Width: | Height: | Size: 88 KiB |
@ -1,3 +1,4 @@
|
|||||||
|
======================
|
||||||
Internal Documentation
|
Internal Documentation
|
||||||
======================
|
======================
|
||||||
|
|
||||||
@ -6,4 +7,3 @@ Internal Documentation
|
|||||||
|
|
||||||
helpcenter_training/index
|
helpcenter_training/index
|
||||||
apimon_training/index
|
apimon_training/index
|
||||||
sd2_training/index
|
|
||||||
|
@ -1,21 +0,0 @@
|
|||||||
Contact - Whom to address for Feedback?
|
|
||||||
=======================================
|
|
||||||
|
|
||||||
In case you have any feedback, proposals or found any issues regarding the
|
|
||||||
Status Dashboard EpMon or CloudMon, you can address them in the corresponding GitHub
|
|
||||||
OpenTelekomCloud-Infra repositories or StackMon repositories.
|
|
||||||
|
|
||||||
Issues or feedback regarding the **ApiMon, EpMon, Status Dashboard, Metric
|
|
||||||
processor** as well as new feature requests can be addressed by filing an issue
|
|
||||||
on the **Gihub** repository under
|
|
||||||
https://github.com/opentelekomcloud-infra/stackmon-config
|
|
||||||
|
|
||||||
If you have found any problems which affects the **internal dashboard design**
|
|
||||||
please open an issue/PR on **GitHub**
|
|
||||||
https://github.com/stackmon/apimon-tests
|
|
||||||
|
|
||||||
If there is another general issue/demand/request try to locate proper repository in
|
|
||||||
https://github.com/orgs/stackmon/repositories
|
|
||||||
|
|
||||||
For general questions you can write an E-Mail to the `Ecosystems Squad
|
|
||||||
<mailto:dl-pbcotcdeleco@t-systems.com>`_.
|
|
@ -1,95 +0,0 @@
|
|||||||
.. _sd2_epmon_overview:
|
|
||||||
|
|
||||||
============================
|
|
||||||
Endpoint Monitoring overview
|
|
||||||
============================
|
|
||||||
|
|
||||||
|
|
||||||
EpMon is a standalone Python based process targeting every OTC service. It
|
|
||||||
looks up the services from the service catalog and sends GET requests to
|
|
||||||
the configured endpoints.
|
|
||||||
|
|
||||||
While performing extensive tests like provisioning a server provides a great
|
|
||||||
coverage and deep insights, it is a rather expensive and complex activity.
|
|
||||||
It can only be performed every so often and leaves certain gaps on the
|
|
||||||
timescale of monitoring. To cover this gap, the EpMon plugin sends
|
|
||||||
GET-requests to a list of URLs endpoints discovered from the OTC service
|
|
||||||
catalog and augmented by simple paths like ``/server``. Such requests
|
|
||||||
are cheap and can be sent in a loop, i.e. every five seconds.
|
|
||||||
The latency and the HTTP status code of those calls are captured,
|
|
||||||
stored in a time series database, and further processed by the Metric
|
|
||||||
Processor.
|
|
||||||
|
|
||||||
Currently EpMon configuration is located in the project ``stackmon-config``:
|
|
||||||
|
|
||||||
https://github.com/opentelekomcloud-infra/stackmon-config/blob/main/epmon/config.yaml
|
|
||||||
|
|
||||||
It defines the query HTTP targets (urls) for every single OTC service.
|
|
||||||
|
|
||||||
An entry in the OTC service catalog is a prerequisite to enable service
|
|
||||||
to be queried by EpMon:
|
|
||||||
|
|
||||||
https://git.tsi-dev.otc-service.com/ecosystem/service_catalog
|
|
||||||
|
|
||||||
If there are multiple entries in service catalog, such service entries
|
|
||||||
can be marked for skip in case they are obsolete. EpMon ``config.yaml``
|
|
||||||
only defines the service queries but doesn't say how and when to use them.
|
|
||||||
For actual use across different monitoring sources and targets the
|
|
||||||
configuration matrix is defined in:
|
|
||||||
|
|
||||||
https://github.com/opentelekomcloud-infra/stackmon-config/blob/main/config.yaml
|
|
||||||
|
|
||||||
The following example configures the autoscaling service (``as``) in
|
|
||||||
EpMon and adds four paths to the service endpoint (three URL path
|
|
||||||
for the Swisscloud):
|
|
||||||
|
|
||||||
.. code:: yaml
|
|
||||||
|
|
||||||
as:
|
|
||||||
service_type: as
|
|
||||||
sdk_proxy: auto_scaling
|
|
||||||
urls:
|
|
||||||
- /
|
|
||||||
- /scaling_group
|
|
||||||
- /scaling_configuration
|
|
||||||
- /scaling_policy
|
|
||||||
as_swiss:
|
|
||||||
service_type: as
|
|
||||||
sdk_proxy: auto_scaling
|
|
||||||
urls:
|
|
||||||
- /
|
|
||||||
- /scaling_group
|
|
||||||
- /scaling_configuration
|
|
||||||
as_skip_v1:
|
|
||||||
service_type: asv1
|
|
||||||
urls: []
|
|
||||||
|
|
||||||
There are three separate items defined for the autoscaling service:
|
|
||||||
|
|
||||||
- The ``as`` entry is the default. It is used for the public OTC regions.
|
|
||||||
- The ``as_swiss`` entry defines the specific settings for the Swisscloud.
|
|
||||||
- The ``as_skip_v1`` entry is entry to be skipped from EpMon.
|
|
||||||
|
|
||||||
By default all entries in service catalog are triggered for EpMon.
|
|
||||||
|
|
||||||
The mandatory parameter for all entries is ``service_type``. This has to
|
|
||||||
match the ``service_type`` entry in the OTC service catalog.
|
|
||||||
|
|
||||||
Another important parameter is ``sdk_proxy``. This attribute identifies
|
|
||||||
which otcextension module should be used for the execution of HTTP GET-queries.
|
|
||||||
|
|
||||||
The most important parameter is ``urls``. It defines a list of URLs which
|
|
||||||
EpMon triggers for this service. As ``service_type`` is known then not
|
|
||||||
full url is required to be defined but only required is its path which
|
|
||||||
appears after the predefined url from the OTC service catalog.
|
|
||||||
|
|
||||||
If some specific service (or some specific service version) is should be
|
|
||||||
skipped from endpoint monitoring, the value of the ``urls`` key has to
|
|
||||||
be set to the empty list in the EpMon configuration file. This ensures that
|
|
||||||
even default queries from service catalog are overwritten by the empty
|
|
||||||
list in this configuration. In this example, the service type asv1 (entry from
|
|
||||||
the OTC service catalog) is not being triggered by EpMon at all as it
|
|
||||||
contains an empty ``urls`` list.
|
|
||||||
|
|
||||||
Collected response codes and response times are sent to the Graphite time
|
|
||||||
series database for further processing by the Metrics Processor.
|
|
@ -1,68 +0,0 @@
|
|||||||
.. _sd2_incidents:
|
|
||||||
|
|
||||||
=========
|
|
||||||
Incidents
|
|
||||||
=========
|
|
||||||
|
|
||||||
TODO
|
|
||||||
Incidents inform customers about the reason why some cloud service has changed its status from "green" (normal operation) to any other state.
|
|
||||||
|
|
||||||
Incidents are created under following conditions:
|
|
||||||
|
|
||||||
- Metric Processor evaluates value 1 or 2 on health metric of specific cloud service and incident is automatically created on SD.
|
|
||||||
- Service Incident Manager (SIM) manually creates incident on SD for one or more cloud services.
|
|
||||||
|
|
||||||
Each cloud service on SD is represented by its name and the status semaphore color icon representing its current health status.
|
|
||||||
The following states of the service can be shown on SD2:
|
|
||||||
|
|
||||||
- Operational - green "check" mark icon
|
|
||||||
- Maintenance - blue "wrench" mark icon
|
|
||||||
- Minor Issue - yellow "cross" mark icon
|
|
||||||
- Major Issue - brown "cross" mark icon
|
|
||||||
- Service Outage - red "cross" mark icon
|
|
||||||
|
|
||||||
These 5 states can be set manually for specific service(s) during incident creation but only 2 states (Minor issue and Service Outage) are set automatically by the Metric Processor health metrics.
|
|
||||||
Incidents are visualized in the respective color scheme on the top of the SD page. Also it's possible to navigate to the related incident via clicking on the service state icon next to the service.
|
|
||||||
|
|
||||||
Once the service health status is changed and incident is created there's no automated clean-up of the incident and incident must be handledl by respective SIM. Only after incident is closed the service changes its state back to "green" Operation state.
|
|
||||||
|
|
||||||
Incident manual creation process
|
|
||||||
================================
|
|
||||||
|
|
||||||
As mentioned besides the automated incident creation the incidents can be created manually as well.
|
|
||||||
Service incident manager must authenticate prior to be able to create an incident.
|
|
||||||
Login is ensured by Openid connect feature on page https://status.cloudmon.eco.tsi-dev.otc-service.com/login/openid
|
|
||||||
|
|
||||||
Once logged in the new option "Open new incident" appears at top right corner of the page.
|
|
||||||
|
|
||||||
.. image:: training_images/sd2_incident.jpg
|
|
||||||
|
|
||||||
The incident creation process consists of these mandatory fields:
|
|
||||||
|
|
||||||
- Incident Summary - Description of the incident
|
|
||||||
- Incident Impact - Drop-down menu of 4 service states (Scheduled Maintenance, Minor Issue, Major Issue, Service Outage)
|
|
||||||
- Affected services - List of all OTC cloud services in conjunctions with regions. One or more items can be chosen
|
|
||||||
- Start - Timestamp when incident has started
|
|
||||||
|
|
||||||
Incident update process
|
|
||||||
=======================
|
|
||||||
|
|
||||||
During the incident lifecycle SIM can update incident with relevant information.
|
|
||||||
The incident creation process consists of these optional fields:
|
|
||||||
|
|
||||||
- Incident title - Change the title of the incident
|
|
||||||
- Update Message - Additional details related to the current status of the incident
|
|
||||||
- Update Status - Drop-down menu of 4 incident statuses (Analyzing incident, Fixing incident, Observing fix, Incident resolved)
|
|
||||||
- Next Update by - Timestamp when incident is expected to be updated with another information
|
|
||||||
|
|
||||||
Incident manual closure process
|
|
||||||
===============================
|
|
||||||
|
|
||||||
Incident is never closed automatically. SIM needs to close the incident by changing its status during the update incident process to "Incident resolved".
|
|
||||||
After that incident disappears from the active list of incidents and service health status is changed back to "green" operational state.
|
|
||||||
Every closed incident is recorded in the Incident History.
|
|
||||||
|
|
||||||
Incident notifications
|
|
||||||
======================
|
|
||||||
|
|
||||||
Status Dashboard support RSS feeds for incident notifications. The details how to setup RSS feed are described on :ref:`notifications <sd2_notifications>` page.
|
|
@ -1,20 +0,0 @@
|
|||||||
===========================
|
|
||||||
Status Dashboard 2 Training
|
|
||||||
===========================
|
|
||||||
|
|
||||||
.. toctree::
|
|
||||||
:maxdepth: 1
|
|
||||||
|
|
||||||
onepager
|
|
||||||
introduction
|
|
||||||
workflow
|
|
||||||
status_dashboard_frontend
|
|
||||||
monitoring_coverage
|
|
||||||
epmon_checks
|
|
||||||
dashboards
|
|
||||||
metrics
|
|
||||||
databases
|
|
||||||
incidents
|
|
||||||
notifications
|
|
||||||
recorded_session
|
|
||||||
contact
|
|
@ -1,93 +0,0 @@
|
|||||||
======================================
|
|
||||||
Introduction to the Status Dashboard 2
|
|
||||||
======================================
|
|
||||||
|
|
||||||
The Open Telekom Cloud is represented to users and customers by the API
|
|
||||||
endpoints and the various services behind them. Customers are
|
|
||||||
interested in a reliable way to check and verify if those services are actually
|
|
||||||
available to them via the Internet.
|
|
||||||
|
|
||||||
The Status Dashboard 2 (SD2) is a service facility monitoring of all OTC
|
|
||||||
services, intended for customers to grasp a quick overview of the service
|
|
||||||
availability. It comprises of a set of **monitoring zones**, each
|
|
||||||
monitoring services of an **monitoring environment** (a. k. a. regions
|
|
||||||
like eu-de, eu-nl, etc.). The mapping of monitoring zones to monitoring
|
|
||||||
sites is configured in a mesh matrix to validate internal as well as
|
|
||||||
external connections to cloud.
|
|
||||||
|
|
||||||
Monitoring can be a tricky process, as there are many approaches of how
|
|
||||||
deep, realistic, practical, synthetic, and reliable to measure the systems
|
|
||||||
and services. The SD2 provides a reliable, quick, and comprehensive view
|
|
||||||
on the OTC, and makes some opinionated, deliberate simplifications. This
|
|
||||||
document guides through the architecture and necessary steps to maintain
|
|
||||||
the monitoring process by all OTC staff roles involved in providing a
|
|
||||||
service.
|
|
||||||
|
|
||||||
Key features of the SD2 framework:
|
|
||||||
|
|
||||||
- Developed to **supervise the 24/7 availability** of the public APIs
|
|
||||||
of the OTC platform.
|
|
||||||
- SD2 **sends GET-requests that list resources** to API-endoints. It
|
|
||||||
does explicitly not simulate more complex, multi-stage use-cases.
|
|
||||||
- Answers to such requests (status, roundtrip time) are grouped by
|
|
||||||
**service** and considered as **metrics**. They are sent to the
|
|
||||||
**Metric Processor**.
|
|
||||||
- The Metric Processor maps the metrics to **flags**, that are raised
|
|
||||||
for certain situations, like request probes not being answered (API
|
|
||||||
down), a majority not answering within a defined threshold period
|
|
||||||
(API slow) or other situations.
|
|
||||||
- Based on a combination of raised flags and their severity, the Metric
|
|
||||||
Processor calculates health metrics as **semaphores**. No flags result in
|
|
||||||
a green semaphore, minor issues result in a yellow semaphore (service
|
|
||||||
degradation), while severe situations lead to red semaphores (service
|
|
||||||
unavailable).
|
|
||||||
- The **SD2 frontend** visualizes health of the service based on the
|
|
||||||
semaphores on a website.
|
|
||||||
- Each non-green semaphore raises automatically an **issue** and displays
|
|
||||||
it on the website. MODs and/or service squad owners should now take over.
|
|
||||||
- It requires the **manual intervention** of the affected service's owners
|
|
||||||
to review, document, resolve, and eventually delete the issue condition.
|
|
||||||
|
|
||||||
.. image:: https://stackmon.github.io/assets/images/solution-diagram.svg
|
|
||||||
|
|
||||||
|
|
||||||
SD2 Architecture Summary
|
|
||||||
------------------------
|
|
||||||
|
|
||||||
- The **EpMon** plugin (end point monitoring) sends several HTTP query
|
|
||||||
requests to service endpoints and generates metrics.
|
|
||||||
- HTTP request metrics (status code, round trip time) are generated by
|
|
||||||
OpenStack SDK and are collected by Statsd.
|
|
||||||
- A time series database (Graphite) pulls metrics from Statsd.
|
|
||||||
- The Metric Processor (MP) processes the requests metrics and flags
|
|
||||||
certain circumstances. Based on defined rules and thresholds, the
|
|
||||||
MP computes resulting service health metrics (semaphores).
|
|
||||||
- The MP raises an issue for any non-green semaphore and stores it in
|
|
||||||
the SQL-based incident database that is part of the frontend component.
|
|
||||||
- The Status Dashboard frontend visualizes the incidents on a website.
|
|
||||||
- Grafana dashboards visualize data from Graphite as well as from the
|
|
||||||
Metric Processor for OTC staff members.
|
|
||||||
- Service Levels are computed based on how long incidents last.
|
|
||||||
|
|
||||||
|
|
||||||
SD2 features
|
|
||||||
------------
|
|
||||||
|
|
||||||
SD2 comes with the following features:
|
|
||||||
|
|
||||||
- Service health with 5 service statuses (three generated
|
|
||||||
semaphores, one custom semaphore light, one maintenance status).
|
|
||||||
- HTTP GET-requests for Endpoint Monitoring.
|
|
||||||
- Custom metrics and custom thresholds.
|
|
||||||
- Incidents are generated once non-green semaphores are detected.
|
|
||||||
Alternatively, incidents can be raised manually as maintence
|
|
||||||
downtimes.
|
|
||||||
- All OTC-environments including eu-de, eu-nl, and eu-sc2 are covered.
|
|
||||||
- The monitoring environments are decoupled from the monitoring zones
|
|
||||||
obtaining the metrics and include eu-de, eu-nl, eu-sc2, and GCP.
|
|
||||||
- Linked Grafana dashboards support service squad members and MODs to
|
|
||||||
understand the root cause for service health changes.
|
|
||||||
- Each service squad can control and manage their metrics as well as
|
|
||||||
dashboards individually.
|
|
||||||
- All parameters configured from single place (stackmon-config) in
|
|
||||||
human readable form (YAML).
|
|
@ -1,25 +0,0 @@
|
|||||||
.. _sd2_notifications:
|
|
||||||
|
|
||||||
=============
|
|
||||||
Notifications
|
|
||||||
=============
|
|
||||||
|
|
||||||
Status Dashboard application comes with a RSS feeds to provide the information about the incidents
|
|
||||||
|
|
||||||
Current RSS Feeds based on the "feedgen" library.
|
|
||||||
https://pypi.org/project/feedgen/
|
|
||||||
|
|
||||||
RSS feeds support region based queries and service name and service category based queries.
|
|
||||||
|
|
||||||
Example of region based query:
|
|
||||||
|
|
||||||
https://status.cloudmon.eco.tsi-dev.otc-service.com/rss/?mt=EU-DE
|
|
||||||
|
|
||||||
Example of service category based query:
|
|
||||||
|
|
||||||
https://status.cloudmon.eco.tsi-dev.otc-service.com/rss/?srvc=Compute
|
|
||||||
|
|
||||||
Examples of region and service name based query:
|
|
||||||
|
|
||||||
https://status.cloudmon.eco.tsi-dev.otc-service.com/rss/?mt=EU-DE&srv=Data%20Warehouse%20Service
|
|
||||||
|
|
@ -1,9 +0,0 @@
|
|||||||
.. _recorded_session_sd2:
|
|
||||||
|
|
||||||
================
|
|
||||||
Recorded Session
|
|
||||||
================
|
|
||||||
|
|
||||||
Onboarding session for Compute squad from 04.10.2023 has been recorded and videos are available on OBS.
|
|
||||||
|
|
||||||
`Recorded session <https://sd2-training.obs.eu-nl.otc.t-systems.com/sd2-onboarding-04.10.2023.mkv>`_
|
|
@ -1,65 +0,0 @@
|
|||||||
===========================
|
|
||||||
Status Dashboard 2 Frontend
|
|
||||||
===========================
|
|
||||||
|
|
||||||
The web based frontend of the SD2 provides public (and internal,
|
|
||||||
after authentication) status information of OTC cloud services
|
|
||||||
across all configured regions. It supports these features:
|
|
||||||
|
|
||||||
- Displays the service health through five service status.
|
|
||||||
- Authentication by OpenID connect (which in turn is connected
|
|
||||||
to the OTC LDAP directory).
|
|
||||||
- Several service are grouped into categories.
|
|
||||||
- Regions - several services are existing in regions.
|
|
||||||
- Incidents - entry about issues affecting certain regions and
|
|
||||||
certain services.
|
|
||||||
- Support of all OTC environments
|
|
||||||
- Incident data is available through an API.
|
|
||||||
- RSS notification (for the OTC mobile app and other integrations).
|
|
||||||
- SLA view of the services.
|
|
||||||
- Incident history.
|
|
||||||
|
|
||||||
Two Status Dashboard portals are available:
|
|
||||||
|
|
||||||
- public status dashboard: https://status.cloudmon.eco.tsi-dev.otc-service.com/
|
|
||||||
- hybrid status dashboard: https://status-ch2.cloudmon.eco.tsi-dev.otc-service.com/
|
|
||||||
|
|
||||||
Service Health View
|
|
||||||
===================
|
|
||||||
|
|
||||||
.. image:: training_images/sd2_frontend.jpg
|
|
||||||
|
|
||||||
From the architecture POV Status Dashboard is a Flask based
|
|
||||||
web server serving API and rendering web content with a
|
|
||||||
PostgreSQL database. The project source is available at
|
|
||||||
https://github.com/stackmon/status-dashboard
|
|
||||||
|
|
||||||
Configuration of the status dashboard frontend is located
|
|
||||||
at github: https://github.com/opentelekomcloud-infra/stackmon-config/blob/main/sdb_prod/catalog.yaml
|
|
||||||
The ``catalog.yaml`` file contains definitions of the
|
|
||||||
service name, service type, service categories and regions.
|
|
||||||
|
|
||||||
Example of AutoScaling service entry in SD catalog:
|
|
||||||
|
|
||||||
.. code:: yaml
|
|
||||||
|
|
||||||
- attributes:
|
|
||||||
category: Compute
|
|
||||||
region: EU-DE
|
|
||||||
type: as
|
|
||||||
name: Auto Scaling
|
|
||||||
- attributes:
|
|
||||||
category: Compute
|
|
||||||
region: EU-NL
|
|
||||||
type: as
|
|
||||||
name: Auto Scaling
|
|
||||||
|
|
||||||
|
|
||||||
SLA view
|
|
||||||
========
|
|
||||||
|
|
||||||
SLA view https://status.cloudmon.eco.tsi-dev.otc-service.com/sla is calculated only from the "outage" service health status and provide 6 months SLA history of each service.
|
|
||||||
|
|
||||||
.. image:: training_images/sd2_sla.jpg
|
|
||||||
|
|
||||||
Details how to work with incidents are described on the :ref:`incidents <sd2_incidents>` page.
|
|
Before Width: | Height: | Size: 457 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 190 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 74 KiB |
Before Width: | Height: | Size: 123 KiB |
Before Width: | Height: | Size: 72 KiB |
Before Width: | Height: | Size: 107 KiB |
@ -1,30 +0,0 @@
|
|||||||
.. _sd2_flow:
|
|
||||||
|
|
||||||
SD2 Data Flow Process
|
|
||||||
=====================
|
|
||||||
|
|
||||||
|
|
||||||
.. image:: training_images/sd2_data_flow.svg
|
|
||||||
:target: training_images/sd2_data_flow.svg
|
|
||||||
:alt: sd2_data_flow
|
|
||||||
|
|
||||||
|
|
||||||
#. Service squad adds new data entries in GitHub repository for
|
|
||||||
EpMon (service URL queries), adjusting flag and health
|
|
||||||
metrics if required, and adds a service entry in the SD catalog.
|
|
||||||
#. Cloudmon fetches public configuration from GitHub and internal
|
|
||||||
configuration (credentials, certs, keys, ...) from a local
|
|
||||||
repository place to generate the final configuration.
|
|
||||||
#. EpMon plugin is executed and triggers HTTP requests as defined
|
|
||||||
by the configuration.
|
|
||||||
#. Metrics resulting by the HTTP requests are collected by Statsd.
|
|
||||||
#. Collected metrics are stored in the time series database Graphite.
|
|
||||||
#. The Metric Processor evaluates HTTP metrics from Graphite TSDB
|
|
||||||
and generates new flag and health metrics based on defined
|
|
||||||
rules and thresholds in configuration.
|
|
||||||
#. Status Dashboard changes service health semaphore based on the
|
|
||||||
resulting health metrics from the Metric Procesor.
|
|
||||||
#. Grafana uses metrics and statistics databases as the data
|
|
||||||
sources for the dashboards. The dashboard with various panels
|
|
||||||
shows the real-time status of the platform. Grafana supports
|
|
||||||
also historical views and trends.
|
|