@startuml hide stereotype skinparam nodesep 6 skinparam ranksep 10 skinparam component { backgroundColor<> Green backgroundColor<> Orange backgroundColor<> LightYellow backgroundColor<> LightGrey backgroundColor<> DarkKhaki backgroundColor<> Khaki backgroundColor<> Grey backgroundColor<> LightGrey } skinparam rectangle { backgroundColor<> Green backgroundColor<> Orange backgroundColor<> LightYellow backgroundColor<> LightGrey backgroundColor<> DarkKhaki backgroundColor<> Khaki backgroundColor<> Grey backgroundColor<> LightGrey } skinparam node { backgroundColor<> Green backgroundColor<> Orange backgroundColor<> LightYellow backgroundColor<> LightGrey backgroundColor<> DarkKhaki backgroundColor<> Khaki backgroundColor<> Grey backgroundColor<> LightGrey } title ** ES Notification plugin** actor User as user actor "recipient" as re node "ElasticSearch cluster/domain" as cluster { rectangle "AES EC2 Instance" <> { rectangle "Kibana" as kibana <> { rectangle "Kibana plugins" as kplugin <> rectangle "Notification Kibana Plugin" as notify_kbn_plugin <> } rectangle "Elasticsearch" as es <> { rectangle "Notification plugin" as notify <> { interface "Transport interface" as ti <> interface "REST interface" as ri <> rectangle "SPI" as spi <> { rectangle "Email module" as em <> rectangle "SNS module" as snsm <> rectangle "Slack module" as sm <> rectangle "Chime module" as cm <> rectangle "Custom Webhook module" as cwm <> } rectangle "Transport Actions" as ta <> ri ---> ti ti ---> ta ta --> em ta --> snsm ta --> sm ta --> cm ta --> cwm } rectangle "Credential storage module" as credential <> rectangle "Security Plugin" as security <> rectangle "Reporting plugin" as reports <> rectangle "Alerting plugin" as alerting <> rectangle "ISM plugin" as ism <> rectangle "Other ES plugins" as esplugin <> } } component "SES" as ses <> component "SNS" as sns <> component "external email service\n(e.g. gmail)" as ex_email_server <> component "Webhook service \n (Slack, Chime, custom)" as hook <> } node "User space" as customer <> { rectangle "Kibana UI" as kibana_ui <> rectangle "ES Interface\n+ ES Data" as es_data <> } user --> kibana_ui kibana_ui -[hidden]right-> kibana kibana_ui -[hidden]down-> es_data es_data -[hidden]right-> es kibana_ui -right- kibana es_data -right- es ' ti -[hidden]up-> ri ' credential -[hidden]up- security ' cm -[hidden]right- snsm ' em -[hidden]right- cm notify_kbn_plugin --> ri: Manage configuration kplugin -> notify_kbn_plugin: Redirect/Load configuration page credential <-- em : Get credentials ti -> security : Verify security kplugin -> ri : Submit notification \n Manage configuration reports ---> ti : Submit notification alerting ---> ti : Submit notification ism ---> ti : Submit notification esplugin ---> ti : Submit notification em ---> ex_email_server: submits email(SMTP) em ...> ses : submits email to server\n(AWS SES SDK) snsm ---> sns: submit message sm ---> hook: submit message cm ---> hook: submit message cwm ---> hook: submit message ses --> re : receive\nemail hook --> re: receive \n message sns --> re: recieve\nnotification rectangle "Legend" { rectangle "New" as new <> rectangle "Modified" as modify <> rectangle "Existing" as existing <> rectangle "External" as external <> rectangle "AWS" as aws <> aws -[hidden]right- new new -[hidden]right- modify modify -[hidden]right- existing existing -[hidden]right- external } @enduml