Using webhooks you can now push real-time notifications to third-party applications. Webhooks are integrated to the Tanzu CloudHealth policy engine as an action. When a policy is triggered, the event data is pushed to the webhook URL and the configured action gets implemented.
Navigate to Setup > Admin > Webhooks to view the list of configured Webhooks.
You can also select multiple Webhooks and click on the dropdown for Bulk Actions to select Delete.
This section lists the detailed steps involved in configuring and deploying a webhook using API for a slack notification on configuring untagged AWS EC2 instances:
Create a mustache template with the following fields:
The above fields could be of any description of your choice. However, the mustache variables within the brackets are case-sensitive and should be used as shown in the image below: For Warnings only the first 50 violation records are shown. To view all results, go to AlertLink.
Using the API key get the fresh access token and test the template. Create a Webhook by name ‘slack webhook’, using the Query variable that will include the template from step one and the slack channel URL. Use the template created in Step 1 in the “template”:
field.
{
"input": {
"name": "slack webhook",
"eventType": "crn::webhookEventType/1",
"headers": [],
"template":
"url": "https://hooks.slack.com/services/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"
}
}
Note: The event type will always be crn::webhookEventType/1
when the Webhook is created for Policies.
Create a Webhook with the template using the following mutation and the above variables for the query:
mutation CreateWebhook($input: WebhookConfigInput!) {
createWebhook(input: $input) {
id
}
}
To add this webhook notification to a policy block, navigate to Governance > Policies and click on New Policy.
slack webhook
.When the policy is triggered, a slack message will be generated referring to the number of untagged instances. You can also navigate to Dashboards > Notifications to find a notification related to this policy.
The following section provides a comprehensive list of all attributes of the violation for a specific policy resource type.
"AWS Anomoly": [
New?",
"Tags",
"StartDate",
"Duration",
"AccountName",
"AccountId",
"Service",
"Region",
"CostImpact",
"CostImpactPercentage",
"CostImpactType",
"Cost",
"Status"
],
"EC2 Instance": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"InstanceName",
"InstanceId",
"PublicIP",
"Product",
"APIName",
"Tenancy",
"ZoneName",
"AttachedEBS",
"ProjectedCostForMonth",
"LaunchedBy",
"OwnerEmail"
],
"EC2 Image": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"ImageId",
"ImageName",
"RootDeviceType",
"Public",
"RegionName"
],
"EC2 Reservation": [
"New?",
"Tags",
"Scope",
"AccountName",
"AWSAccountID",
"OfferingType",
"OfferingClass",
"APIName",
"ZoneName",
"RegionName",
"VPC",
"Count",
"OperatingSystem",
"ActualPrice",
"TimeToExpire"
],
"EBS Volume": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"VolumeName",
"VolumeId",
"InstanceName",
"ZoneName",
"Size(GB)",
"InUse",
"ListPricePerMonth",
"OwnerEmail"
],
"KMS Encryption Key": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"KeyID",
"Status",
"CreationDate",
"RotationEnabled?"
],
"EC2 Snapshot": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"SnapshotName",
"SnapshotId",
"VolumeName",
"Size(GB)",
"RegionName",
"CreateDate"
],
"S3 Bucket": [
"New?",
"Tags",
"Name",
"StorageinGB",
"AccountName",
"AWSAccountID",
"Access"
],
"SageMaker Endpoint": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"EndpointName",
"CreationTime",
"EndpointStatus",
"LastModified"
],
"SageMaker Notebook Instance": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"NotebookInstanceName",
"NotebookInstanceType",
"CreationTime",
"NotebookInstanceStatus",
"LastUpdated"
],
"RDS Instance": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"InstanceId",
"ZoneName",
"APIName",
"Multi-AZ",
"Snapshots?",
"Encrypted?",
"ListPricePerMonth",
"ProjectedCostForCurrentMonth",
"CreatedOn"
],
"RDS Security Group": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"Name",
"Description"
],
"Lambda Function": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"FunctionName",
"Description",
"Runtime",
"Handler",
"MemorySize",
"CodeSize",
"Timeout"
],
"RDS Subnet Group": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"VPCId",
"Name",
"Description"
],
"RDS Snapshot": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"SnapshotId",
"InstanceId",
"Size(GB)",
"ZoneName",
"CreateDate"
],
"Classic Load Balancer": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"Name",
"DNSName",
"CreatedAt",
"VPCId"
],
"Security Group": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"GroupName",
"GroupId",
"RegionName"
],
"EC2 Spot Request": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"InstanceName",
"APIName",
"ZoneName",
"SpotId",
"Maximum(bid)Price",
"RequestType",
"CreateDate"
],
"EMR Cluster": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"ClusterId",
"Name",
"State",
"StateChangeCode",
"ZoneName"
],
"VPC": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"VPCName",
"VPCId",
"State",
"CIDRBlock",
"DHCPOptionsId"
],
"VPC Subnet": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"SubnetId",
"SubnetName",
"VPCId",
"State",
"CIDRBlock",
"AvailableIPs"
],
"CloudTrail Trail": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Name",
"TrailARN",
"S3BucketName",
"IsMulti-RegionTrail"
],
"WorkSpace": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"DirectoryID",
"Username",
"WorkSpaceID",
"State",
"AutoStopTimeout"
],
"Auto Scaling Group": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"AutoScalingGroupName",
"MinSize",
"MaxSize",
"DesiredCapacity",
"AvailabilityZones"
],
"Kinesis Firehose": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"FirehoseName",
"FirehoseStatus",
"Created",
"Source",
"Destinations"
],
"Kinesis Stream": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"Name",
"Status",
"NumberofShards"
],
"ElastiCache Cluster": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Name",
"Engine",
"ZoneName",
"RegionName",
"CreatedOn"
],
"ElastiCache Reserved Node": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"OfferingType",
"Duration",
"NodeCount",
"StartTime",
"NodeType",
"FixedPrice",
"UsagePrice",
"RegionName"
],
"Cloud Formation Stack": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Name",
"StackId",
"CreatedAt"
],
"Elastic File System": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Name",
"Size(Bytes)",
"CreationTime",
"PerformanceMode",
"FileSystemID",
"LifeCycleState"
],
"OpenSearch Domain": [
"New?",
"Tags",
"DomainName",
"ElasticsearchVersion",
"InstanceType",
"InstanceCount",
"EBSVolumeType",
"EBSVolumeSize",
"EBSVolumeIOPS",
"AutomatedSnapshotStartHour",
"DomainStatus",
"ProjectedMonthlyCost"
],
"RDS Instance Reservation": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Type",
"InstanceId",
"APIName",
"RegionName",
"Count",
"DatabaseType",
"Multi-AZ",
"FixedPrice"
],
"Redshift Cluster": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"ClusterIdentifier",
"ZoneName",
"RegionName",
"Snapshots?",
"CreatedOn"
],
"Redshift Reserved Node": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"ReservedNodeId",
"ReservedNodeOfferingId",
"StartTime",
"Duration",
"NodeType",
"RegionName"
],
"DMS Replication Instance": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"InstanceID",
"InstanceStatus",
"InstanceClass",
"VPCId",
"ZoneName",
"Public?",
"Multi-AZ?",
"Created",
"PublicIPAddress",
"PrivateIPAddress"
],
"NAT Gateway": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"VPCId",
"SubnetId",
"NATGatewayId",
"PublicIP",
"PrivateIPAddress",
"AllocationID",
"NetworkInterfaceID",
"State"
],
"WorkSpace Bundle": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"BundleID",
"BundleName",
"BundleComputeType",
"Description",
"Owner",
"Custom?"
],
"SageMaker Training Job": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"TrainingJobName",
"CreationTime",
"JobStatus"
],
"Savings Plan": [
"New?",
"Tags",
"Name",
"DisplayName",
"SubscriptionName",
"SKUName",
"AppliedScopeDisplayName",
"Type",
"AppliedScopeType",
"BillingPlan",
"CommitmentAmount",
"CommitmentCurrency",
"CommitmentGrain",
"Renew",
"Term",
"DisplayProvisioningState",
"EffectiveDateTime",
"ExpiryDateTime",
"PurchaseDateTime",
"UtilizationTrend",
"IsActive?",
"Derived?"
],
"OpenSearch Reserved Instance": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"ReservationName",
"ReservationID",
"OfferingID",
"ReservationType",
"StartTime",
"Duration",
"InstanceCount",
"Status",
"PaymentOption"
],
"EC2 Application Load Balancer": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"DNSName",
"Name",
"ARN",
"CreatedAt",
"Derived?",
"VPCId"
],
"EC2 Network Load Balancer": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"DNSName",
"Name",
"ARN",
"Created",
"Derived?",
"VPCId"
],
"KMS Customer Master Keys": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"KeyID",
"Status",
"CreationDate",
"RotationEnabled?"
],
"EKS Cluster": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"ARN",
"Status",
"ClusterName",
"Version"
],
"EKS Node Group": [
"New?",
"Tags",
"ARN",
"ClusterName",
"KubernetesVersion",
"KubernetesLabels"
],
"ElastiCache Replication Group": [
"New?",
"Tags",
"Name",
"ARN",
"CreateTime",
"GlobalReplicationGroupName",
"Status",
"CacheNodeType",
"ClusterEnabled",
"AuthTokenEnabled",
"IsActive"
],
"CloudWatch Log Group": [
"New?",
"Tags",
"LogGroupName"
],
"FSx File System": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"ResourceID",
"FileSystemID",
"CreationTime",
"Lifecycle",
"FileSystemType",
"StorageCapacity",
"StorageType"
],
"AppStream Application": [
"New?",
"Tags",
"Name",
"ARN",
"CreatedTime",
"DisplayName",
"IconURL",
"Metadata",
"IconS3Bucket",
"Platforms",
"LaunchPath",
"IsActive?"
],
"Chef Node": [
"New?",
"Tags",
"NodeName",
"Runlist",
"OS",
"OSVersion",
"IP",
"LastCheckin"
],
"File System": [
"New?",
"Tags",
"Mount",
"InstanceName",
"Size",
"%Used"
],
"Route 53 Hosted Zone": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"Name",
"RecordSetCount",
"HostedZoneId",
"FirstDiscovered"
],
"DynamoDB Table": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"RegionName",
"TableName",
"ItemCount",
"TableStatus",
"TableSizeBytes",
"ProvisionedReadCapacityUnits",
"ProvisionedWriteCapacityUnits"
],
"Amazon Elastic IP": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"PublicIP",
"RegionName",
"InstanceName",
"Domain",
"PrivateIPAddress"
],
"Amazon Account": [
"New?",
"Tags",
"AccountName",
"OwnerId",
"AccountType",
"AuthenticationType",
"BillingAccount",
"DetailedBillingBucket",
"ConsolidatedBill?",
"Status"
],
"IAM Server Certificate": [
"New?",
"Tags",
"CertificateID",
"CertificateName"
],
"IAM Group": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"GroupName",
"GroupId"
],
"IAM Role": [
"New?",
"Tags",
"RoleID",
"RoleName"
],
"IAM Policy": [
"New?",
"Tags",
"PolicyID",
"PolicyName"
],
"IAM User": [
"New?",
"Tags",
"AccountName",
"AWSAccountID",
"UserId",
"UserName",
"MFAStatus"
],
"Aggregator": [
"New?",
"Tags",
"AggregatorName",
"Status",
"LastUpdate",
"AutoUpdate",
"Version"
],
"CloudHealth Agent": [
"New?",
"Tags",
"InstanceName",
"InstanceState",
"InstanceStatus",
"Cloud",
"AgentInstallDate",
"LastAgentUpload",
"LastAgentCheckin",
"AgentVersion",
"AgentStatus"
],
"Virtual Machine": [
"New?",
"Tags",
"VmName",
"ComputerName",
"PowerState",
"State",
"Caching",
"SubscriptionName",
"AzureSubscriptionID",
"ResourceGroupName",
"SizeName",
"RegionName",
"Deployment",
"OSDiskType",
"HybridBenefit",
"IsActive?",
"IsDerived?"
],
"Disk": [
"New?",
"Tags",
"DiskName",
"AccountType",
"OSType",
"DiskType",
"DiskSizeGb",
"VmName",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Azure IP Address": [
"New?",
"Tags",
"IPAddressName",
"IPAddress",
"AllocationMethod",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Resource Group": [
"New?",
"Tags",
"ResourceGroupName",
"SubscriptionName",
"RegionName",
"IsActive?",
"IsDerived?"
],
"Azure SQL Server Firewall Rules": [
"New?",
"Tags",
"SQLServerFirewallRuleName",
"ServerName",
"Kind",
"StartIPAddress",
"IsActive?"
],
"Azure SQL Server": [
"New?",
"Tags",
"ServerName",
"DomainName",
"Version",
"State",
"AdministratorName",
"DatabaseCount",
"SubscriptionName",
"ResourceGroupName",
"IsDerived?",
"IsActive?"
],
"SQL Server Vulnerability Assessment": [
"New?",
"Tags",
"SQLServerVulnerabilityAssessmentName",
"ServerName",
"IsActive?"
],
"Azure Active Directory": [
"New?",
"Tags",
"ActiveDirectoryUserName",
"IsActive?",
"UserPrincipalName",
"UserType"
],
"Storage Account": [
"New?",
"Tags",
"StorageName",
"Kind",
"Performance",
"Replication",
"PrimaryStatus",
"Created",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Batch Account": [
"New?",
"Tags",
"BatchAccountName",
"AccountEndpoint",
"State",
"AutoStorage",
"CoreQuota",
"PoolQuota",
"ActiveJobAndScheduleQuota",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Snapshot": [
"New?",
"Tags",
"SnapshotName",
"AccountType",
"TimeCreated",
"OsType",
"DiskSizeGb",
"OwnerId",
"ProvisioningState",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Virtual Machine Scale Set": [
"New?",
"Tags",
"ScaleSetName",
"VMCount",
"SKUName",
"SubscriptionName",
"ResourceGroupName",
"IsActive?",
"IsDerived?"
],
"Redis Cache": [
"New?",
"Tags",
"CacheName",
"ProvisioningState",
"RedisVersion",
"SKUName",
"SKUFamily",
"SKUCapacity",
"CacheLocation",
"Accessiblevianon-ssl",
"RedisConfig",
"ShardCount",
"HostName",
"Port",
"SSLPort",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Search Service": [
"New?",
"Tags",
"SearchServiceName",
"ReplicaCount",
"PartitionCount",
"HostingMode",
"Status",
"StatusDetail",
"ProvisioningState",
"Name",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"SQL Server Database": [
"New?",
"Tags",
"SQLDatabaseName",
"DatabaseID",
"ServerName",
"Status",
"ServiceTier",
"Collation",
"PerformanceLevel",
"SubscriptionName",
"ResourceGroupName",
"IsDerived?",
"IsActive?"
],
"SQL Data Warehouse": [
"New?",
"Tags",
"SQLDataWarehouseName",
"Status",
"DatabaseID",
"Collation",
"MaxSize.",
"SecondaryRegion",
"SubscriptionName",
"ResourceGroupName",
"IsActive?",
"IsDerived?"
],
"HDInsight Cluster": [
"New?",
"Tags",
"HDInsightClusterName",
"State",
"ClusterState",
"ClusterVersion",
"OperatingSystem",
"Tier",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Log Analytics Workspace": [
"New?",
"Tags",
"LogAnalyticsWorkspaceName",
"State",
"Source",
"CustomerId",
"Name",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"CDN Profile": [
"New?",
"Tags",
"CDNProfileName",
"State",
"ResourceState",
"Name",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Express Route Circuit": [
"New?",
"Tags",
"ExpressRouteCircuitName",
"AllowClassicOperation",
"CircuitProvisioningState",
"ServiceProviderProvisioningState",
"ServiceKey",
"ServiceProviderNote",
"State",
"Name",
"Tier",
"Family",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Network Interface": [
"New?",
"Tags",
"NetworkInterfaceName",
"MacAddress",
"Primary",
"EnableAcceleratedNetworking",
"EnableIpForwarding",
"ResourceGuid",
"State",
"SubscriptionName",
"ResourceGroupName",
"VmName",
"SecurityGroupName",
"Deployment",
"IsActive?"
],
"Virtual Network Gateway": [
"New?",
"Tags",
"VirtualNetworkGatewaysName",
"GatewayType",
"GatewaySize",
"VirtualIPAddress",
"BGPEnabled",
"VPNClientAddressPool",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Virtual Network": [
"New?",
"Tags",
"VirtualNetworkName",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Service Bus Namespace": [
"New?",
"Tags",
"ServiceBusNamespaceName",
"ServiceBusEndpoint",
"Status",
"State",
"Enabled",
"Name",
"Tier",
"Capacity",
"CreateAcsNamespace",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Recovery Service Vault": [
"New?",
"Tags",
"RecoveryServicesVaultName",
"Name",
"State",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"StorSimple Device Manager": [
"New?",
"Tags",
"StorSimpleDeviceManagerName",
"State",
"SkuName",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"App Service Plan": [
"New?",
"Tags",
"AppServicePlan",
"Status",
"MaxWorkers",
"SubscriptionName",
"ResourceGroupName",
"Active?",
"Derived?"
],
"App Service": [
"New?",
"Tags",
"AppServiceName",
"Owner",
"Kind",
"DefaultHostName",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Cosmos DB": [
"New?",
"Tags",
"CosmosDBName",
"State",
"DocumentEndpoint",
"DatabaseAccountOfferType",
"IpRangeFilter",
"EnableAutomaticFailover",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Key Vault": [
"New?",
"Tags",
"KeyVaultName",
"SKUName",
"SKUFamily",
"EnabledForDeployment",
"EnabledForDiskEncryption",
"EnabledForTemplateDeployment",
"TenantId",
"VaultUri",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Key Vault Key": [
"New?",
"Tags",
"KeyVaultKeyName",
"KeyVaultName",
"Enabled?",
"RecoveryLevel",
"KeyCreated",
"KeyUpdated"
],
"Key Vault Secret": [
"New?",
"Tags",
"KeyVaultSecretName",
"KeyVaultName",
"Enabled?",
"RecoveryLevel",
"SecretCreated",
"SecretUpdated"
],
"Application Gateway": [
"New?",
"Tags",
"ApplicationGatewayName",
"ProvisioningState",
"ResourceGuid",
"SKUName",
"SKUTier",
"Capacity",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"App Service Environment": [
"New?",
"Tags",
"AppServiceEnvironment",
"Status",
"IsEnvironmentHealthy",
"EnvironmentStatus",
"IsSuspended",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Reservation Order": [
"New?",
"Tags",
"ReservationOrderName",
"Name",
"RequestDate",
"CreatedDate",
"Quantity",
"IsActive?",
"Derived?"
],
"Reservation": [
"New?",
"Tags",
"ReservationName",
"Renew?",
"AppliedScopeType",
"Quantity",
"ProvisioningState",
"ExpiryDate",
"BillingPlan",
"EffectiveDate",
"ReservedResourceType",
"InstanceFlexibility",
"SKUDescription",
"SubscriptionName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Log Profile": [
"New?",
"Tags",
"LogProfileName",
"RetentionPolicyEnabled?",
"RetentionPolicyDays",
"SubscriptionName",
"Deployment",
"IsActive?"
],
"Azure Subscription": [
"New?",
"Tags",
"SubscriptionName",
"AzureSubscriptionID",
"EnrollmentName",
"AzureState",
"QuotaType",
"IsActive?",
"IsDerived?",
"Ignored?"
],
"Activity Log Alert": [
"New?",
"Tags",
"ActivityLogAlertName",
"IsEnabled?",
"Description",
"SubscriptionName",
"ResourceGroupName",
"IsActive?"
],
"Kubernetes Service": [
"New?",
"Tags",
"KubernetesServiceName",
"ResourceGroupName",
"EnableRBAC",
"ProvisioningState",
"Deployment",
"Version"
],
"SQL Managed Instance": [
"New?",
"Tags",
"SQLManagedInstanceName",
"ResourceID",
"SubscriptionName",
"SKUName",
"State",
"IsActive?"
],
"PostgreSQL Server": [
"New?",
"Tags",
"PostgreSQLServer",
"SubscriptionName",
"ResourceGroupName",
"IsActive?",
"Derived?"
],
"Billing Account": [
"New?",
"Tags",
"BillingAccountName",
"AccountId",
"AccountStatus",
"AccountType",
"AgreementType",
"AzureOrganizationId",
"IsActive?",
"IsDerived?"
],
"Billing Profile": [
"New?",
"Tags",
"BillingProfileName",
"DisplayName",
"Currency",
"InvoiceDay",
"IsActive?",
"IsDerived?"
],
"Invoice Section": [
"New?",
"Tags",
"InvoiceSectionName",
"DisplayName",
"IsActive?",
"IsDerived?"
],
"Application Insight": [
"New?",
"Tags",
"ApplicationInsightName",
"ApplicationId",
"AppId",
"ApplicationType",
"FlowType",
"RequestSource",
"InstrumentationKey",
"CreationDate",
"TenantId",
"HockeyAppId",
"HockeyAppToken",
"ProvisioningState",
"SamplingPercentage",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?",
"IsDerived?"
],
"Azure Enrollment": [
"New?",
"Tags",
"EnrollmentName",
"EnrollmentID",
"Status",
"SubscriptionStatus",
"AccessKeyExpirationDate",
"CreatedAt",
"ServicePrincipalID"
],
"Azure Service Principal": [
"New?",
"Tags",
"ServicePrincipalName",
"Type",
"TenantID",
"ApplicationID",
"Status",
"FirstDiscovered"
],
"Storage Blob Container": [
"New?",
"Tags",
"StorageBlobContainerName",
"PublicAccess",
"LeaseStatus",
"LeaseState",
"LastModifiedTime",
"HasImmutabilityPolicy?",
"Haslegalhold?",
"IsActive?"
],
"Azure Active Directory Role": [
"New?",
"Tags",
"ActiveDirectoryRoleDefinitionName",
"IsActive?"
],
"SQL Server Auditing": [
"New?",
"Tags",
"SQLServerAuditingName",
"ServerName",
"State",
"StorageEndpoint",
"IsActive?"
],
"SQL Server Threat Detection": [
"New?",
"Tags",
"SQLServerThreatDetectionName",
"ServerName",
"State",
"IsActive?"
],
"SQL Database Threat Detection": [
"New?",
"Tags",
"SQLDatabaseThreatDetectionName",
"SQLDatabaseName",
"State",
"IsActive?"
],
"SQL Database Auditing": [
"New?",
"Tags",
"SQLDatabaseAuditingName",
"SQLDatabaseName",
"State",
"StorageEndpoint",
"IsActive?"
],
"Subscription Security Policy": [
"New?",
"Tags",
"SubscriptionSecurityPolicyName",
"SubscriptionName",
"LogCollection?",
"IsActive?"
],
"Azure Security Group": [
"New?",
"Tags",
"SecurityGroupName",
"ProvisioningState",
"SubscriptionName",
"ResourceGroupName",
"Deployment",
"IsActive?"
],
"IoT Hub": [
"New?",
"Tags",
"IoTHubsName",
"Type",
"State",
"HostName",
"SKUName",
"Tier",
"Capacity",
"Connections",
"DeviceTelemetry",
"C2DCommands",
"DeviceIdentityOperations",
"FileUploadOperations",
"Routes",
"IsActive?",
"IsDerived?"
],
"Event Hub Namespace": [
"New?",
"Tags",
"EventHubNamespaceName",
"SKUName",
"Tier",
"Capacity",
"ProvisioningState",
"IsActive?",
"IsDerived?"
],
"Event Hub": [
"New?",
"Tags",
"EventHubsName",
"MessageRetention(indays)",
"PartitionCount",
"Status",
"Interval(inseconds)",
"SizeLimit(inbytes)",
"IsActive?",
"IsDerived?"
],
"Databricks Workspace": [
"New?",
"Tags",
"DatabricksWorkspace",
"PricingTier",
"SubscriptionName",
"ResourceGroupName",
"IsActive?",
"Derived?"
],
"PostgreSQL Server Firewall Rules": [
"New?",
"Tags",
"PostgreSQLServerFirewallRule",
"ResourceID",
"SubscriptionName",
"IsActive?"
],
"Mysql Server": [
"New?",
"Tags",
"MySQLServer",
"SubscriptionName",
"ResourceGroupName",
"IsActive?",
"Derived?"
],
"Availability Set": [
"New?",
"Tags",
"SubscriptionName",
"AzureComputeAvailabilitySet.name",
"ID",
"PlatformUpdateDomainCount",
"PlatformFaultDomainCount",
"IsActive?",
"Derived?"
],
"Container Registry": [
"New?",
"Tags",
"Name",
"SubscriptionName",
"LoginServer",
"CreationDate",
"SKUName",
"SKUTier",
"ProvisioningState",
"CreatedBy",
"CreatedByType",
"CreatedAt",
"LastModifiedBy",
"LastModifiedByType",
"LastModifiedAt",
"IdentityType",
"IsActive?"
],
"Azure Anomaly": [
"New?",
"Tags",
"StartDate",
"Duration",
"SubscriptionName",
"SubscriptionId",
"Service",
"Region",
"CostImpact",
"CostImpactPercentage",
"CostImpactType",
"Cost",
"Status"
],
"Azure Partner Center": [
"New?",
"Tags",
"PartnerCenterName",
"Domain",
"Status",
"FirstDiscovered"
],
"Azure AVS Cluster": [
"New?",
"Tags",
"Name",
"SubscriptionName",
"ClusterType",
"ClusterSKUName",
"AVSClusterSize",
"AVSClusterID",
"AVSClusterProvisioningState",
"VMRestrictMovement",
"IsActive"
],
"Azure AVS Datastore": [
"New?",
"Tags",
"Name",
"SubscriptionName",
"DatastoreType",
"DiskPoolVolumeID",
"DiskPoolVolumeLunName",
"DiskPoolVolumePath",
"DiskPoolVolumeMountOption",
"NetAppVolumeID",
"AVSDBProvisioningState",
"DatastoreStatus",
"IsActive"
],
"Azure AVS Virtual Machine": [
"New?",
"Tags",
"Name",
"SubscriptionName",
"VirtualMachineType",
"VMDisplayName",
"VMMOReferenceID",
"VMFolderPath",
"VMRestrictMovement",
"IsActive"
],
"Machines": [
"New?",
"Tags",
"AccountName",
"MachineName",
"Virtual?",
"Platform",
"ProcessorCoreCount",
"Memory(GB)",
"Disk(GB)",
"DailyCost",
"CostBasis"
],
"Other Accounts": [
"New?",
"Tags",
"AccountName",
"Description",
"CreatedAt",
"vCenterStatus"
],
"VMware Account": [
"New?",
"Tags",
"AccountServer",
"Username",
"CreatedAt"
],
"Compute Instance": [
"New?",
"Tags",
"ProjectFriendlyName",
"InstanceName",
"MachineType",
"Zone",
"Status",
"CreationDate",
"Enhancements"
],
"Dataproc Cluster": [
"New?",
"Tags",
"ClusterName",
"ProjectFriendlyName",
"State",
"ClusterMode",
"Region",
"CreationDate"
],
"GKE Cluster": [
"New?",
"Tags",
"ClusterName",
"ProjectFriendlyName",
"State",
"Location",
"CreationDate",
"CurrentNodeCount",
"CurrentMasterVersion"
],
"Compute Static IP": [
"New?",
"Tags",
"StaticIPName",
"ProjectFriendlyName",
"State",
"Address",
"Region",
"CreationDate"
],
"Compute Image": [
"New?",
"Tags",
"ProjectFriendlyName",
"ImageName",
"Status",
"DiskSize(GB)",
"CreationDate"
],
"Compute Snapshot": [
"New?",
"Tags",
"ProjectFriendlyName",
"SnapshotName",
"Status",
"Size(GB)",
"CreationDate"
],
"Compute Disk": [
"New?",
"Tags",
"ProjectFriendlyName",
"Zone",
"DiskName",
"DiskType",
"Size(GB)",
"Status",
"FirstDiscovered"
],
"Google Project": [
"New?",
"Tags",
"ProjectFriendlyName",
"ProjectId",
"ProjectNumber",
"Status",
"CreatedAt"
],
"GCP Anomaly": [
"New?",
"Tags",
"StartDate",
"Duration",
"ProjectName",
"ProjectId",
"CloudProduct",
"Region",
"CostImpact",
"CostImpactPercentage",
"CostImpactType",
"Cost",
"Status"
],
"Cloud Run Service": [
"New?",
"Tags",
"ProjectFriendlyName",
"Name",
"Region",
"IngressStatus",
"ApiVersion",
"Kind",
"MetadataName",
"MetadataNamespace",
"MetadataGeneration",
"StatusURL"
],
"Committed Use Discount": [
"New?",
"Tags",
"ProjectFriendlyName",
"CommitmentName",
"Region",
"Status",
"Term",
"StartDate",
"EndDate",
"vCPUAmount",
"LocalSSDAmount",
"GPUAmount",
"MemoryAmount"
],
"DNS Managed Zone": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"ManagedZoneName",
"DNSName",
"NameServers",
"CreationTime",
"Visibility"
],
"App Engine Application": [
"New?",
"Tags",
"ProjectFriendlyName",
"ApplicationID",
"Name",
"DefaultHostname",
"Region",
"GCRDomain",
"DatabaseType",
"AuthDomain",
"OAuth2ClientID",
"Enabled",
"ServingStatus",
"DefaultCookieExpiration"
],
"Instance Group": [
"New?",
"Tags",
"ProjectFriendlyName",
"InstanceGroupName",
"Region",
"Zone",
"CreationTimestamp",
"Numberofinstances",
"ResourceType",
"Description",
"SelfLink",
"IsActive?"
],
"Compute VPN Gateway": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"VPNGatewayName",
"StackType",
"Network",
"SelfLink",
"Description"
],
"Bigtable Instance": [
"New?",
"Tags",
"ProjectFriendlyName",
"BigtableInstanceName",
"DisplayName",
"State",
"Type"
],
"Bigtable Cluster": [
"New?",
"Tags",
"ProjectFriendlyName",
"BigtableClusterName",
"ServeNode",
"State",
"DefaultStorageType"
],
"Bigtable Backup": [
"New?",
"Tags",
"ProjectFriendlyName",
"BackupName",
"BackupSourceTable",
"BackupSizeInBytes",
"BackupState",
"BackupStartTime",
"BackupEndTime",
"BackupExpireTime",
"IsActive?"
],
"Bigtable Table": [
"New?",
"Tags",
"ProjectFriendlyName",
"TableName",
"TableBackupName",
"TableBackupStartTime",
"TableBackupEndTime",
"RestoreSourceType",
"Granularity",
"IsActive?"
],
"Cloud Router": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"RouterName",
"EncryptedInterconnectRouter",
"AdvertiseMode",
"AdvertisedGroups",
"BGPASN",
"SelfLink",
"Description"
],
"Secret Manager Secret": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"SecretName",
"CreateTime",
"ExpireTime",
"TTL",
"SecretReplicas",
"ResourceID"
],
"Secret Manager Secret Version": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"SecretName",
"SecretVersionName",
"CreateTime",
"DestroyTime",
"State",
"SecretVersionReplicas"
],
"KeyRing": [
"New?",
"Tags",
"ProjectFriendlyName",
"KeyRingName",
"Region"
],
"CryptoKey": [
"New?",
"Tags",
"ProjectFriendlyName",
"CryptoKeyName",
"Region",
"PrimaryName",
"PrimaryState",
"CreateTime"
],
"CryptoKey Version": [
"New?",
"Tags",
"ProjectFriendlyName",
"CryptoKeyVersionName",
"State",
"CreateTime"
],
"BigQuery Table": [
"New?",
"Tags",
"TableID",
"ProjectFriendlyName",
"CreateTime",
"LastModifiedTime",
"ExpirationTime",
"Region",
"Description",
"TableType"
],
"BigQuery Dataset": [
"New?",
"Tags",
"DatasetID",
"ProjectFriendlyName",
"DefaultTableExpirationTime",
"SatisfiesPzs",
"Region",
"CreationTime",
"LastUpdateTime",
"Description"
],
"SQL Database Instance": [
"New?",
"Tags",
"Name",
"ProjectFriendlyName",
"Region",
"PublicIPAddress",
"PrivateIPAddress",
"PricingPlan",
"Tier",
"LocationPreferenceZone",
"DatabaseVersion",
"BackendType",
"State",
"MaintenanceWindowUpdateTrack",
"ActivationPolicy"
],
"App Engine Service": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"Name",
"ShardBy",
"IngressTrafficAllowed"
],
"App Engine Service Version": [
"New?",
"Tags",
"ProjectFriendlyName",
"Region",
"Name",
"ReadinessChkHost",
"CreatedBy",
"ServingStatus"
],
"Logging Log Bucket": [
"New?",
"Tags",
"ProjectFriendlyName",
"LogBucketName",
"Description",
"LifecycleState",
"RetentionDays",
"Region",
"CreateTime",
"UpdateTime"
],
"GCP Assets": [
"New?",
"Tags",
"Name",
"created_at",
"updated_at",
"GCPTaggableAsset"
],
"Amazon Assets": [
"New?",
"Tags",
"Name",
"name",
"AWSAccountID",
"created_at",
"updated_at",
"AWSTaggableAssetsonly"
],
"Azure Assets": [
"New?",
"Tags",
"Name",
"created_at",
"updated_at",
"AzureTaggableAsset(Doesnotgatherassociatedassets)"
]
}
Understand performance trends and requirements so that you can make good provisioning decisions.
The Tanzu CloudHealth platform does not integrate with the free version of New Relic, because the free version does not allow API access.
The Tanzu CloudHealth Platform integrates with the New Relic Infrastructure product with data access through the Insights API. Tanzu CloudHealth retrieves CPU, Memory, Disk usage, and Network I/O through the Insights API.
The New Relic integration gives you improved visibility across every dimension of your cloud environment. The resulting holistic view provides a better understanding of performance trends and requirements so that you can make good provisioning decisions.
Tanzu CloudHealth continues to support the legacy New Relic Servers product until its EOL.
This option is only applicable for legacy New Relic accounts.
State | Effect |
---|---|
On |
New Relic labels will be imported into Tanzu CloudHealth |
Off |
New Relic tags will not be imported |
4. Click Save Account.
- It can take up to one hour for host data to appear in Tanzu CloudHealth. Rightsizing and Metrics drilldowns can take up to 24 hours for collection and display in the Tanzu CloudHealth platform.
- New Relic labels that are imported into Tanzu CloudHealth can be used in perspectives and reports.
Tanzu CloudHealth collects new assets, in this case New Relic Hosts, on a 15 minute basis. These assets will have New Relic-specific information associated with them, such as:
Tanzu CloudHealth collects new New Relic labels every 15 minutes and adds them to the New Relic Host.
Tanzu CloudHealth collects File Systems from Hosts running the New Relic agent.
A New Relic agent is required.
The following metrics are collected from New Relic.
Metric Family | Tanzu CloudHealth Metric | Tanzu CloudHealth Aggregation | New Relic Metrics |
---|---|---|---|
CPU | CPU % | avg, min, max | = system.cpu.system + system.cpu.user |
File System | File System Size (GB) | avg, min, max | = system.disk.total |
File System | File System Used (GB) | avg, min, max | = system.disk.used |
File System | File System Used % | avg, min, max | = system.disk.used / system.disk.total * 100 |
Memory | Memory Capacity (GB) | avg, min, max | = system.mem.used + system.mem.free |
Memory | Memory Free (GB) | avg, min, max | = system.mem.free + system.mem.cached +system.mem.buffers |
Memory | Memory Used % | avg, min, max | = system.mem.pct_usable |
Network | Bytes received | avg, min, max | = system.net.bytes\rcvd |
Network | Bytes sent | avg, min, max | = system.net.bytes\sent |
File System metrics is correlated to a File System and the New Relic Host/EC2 Instance.
New Relic tags can be used to create specific business asset grouping within Tanzu CloudHealth Perspectives. New Relic Hosts appear in the Choose An Asset Type dropdown, as well as specific New Relic fields including Console URL, Name, and tags pulled in from the New Relic Account.
New Relic will pull in CPU, Memory, and Disk for instances and show them within the Rightsizing Report for each instance with a New Relic agent installed. New Relic CPU metrics will take priority over CloudWatch CPU metrics in this section as well. Also, if Tanzu CloudHealth detects New Relic agent running for a host, the platform will exclude CloudWatch CPU collection for that host.
Extra columns can be added within the Rightsizing Report as well for New Relic specific information. (See Screenshot Below)
Clicking the New Relic icon on this screen will open a browser tab to the New Relic console, displaying the performance dashboard for the host.
Once inside the Hosts menu, you can click into the Instance Name, and drill down into Performance. This will give you a detailed view of network performance in a multi-chart visualization.
You can also click on the New Relic console link and open the New Relic Dashboard for the corresponding instance.
Metrics pulled in from New Relic will be available for each instance within the Metrics report. When drilling into metrics charts for individual assets, Tanzu CloudHealth will show when the metrics source is coming from New Relic.
When drilling into metrics charts for individual assets Tanzu CloudHealth will show when the metrics source is coming from New Relic.
Dynatrace is a software-intelligence monitoring platform that simplifies enterprise cloud complexity and accelerates digital transformation. You can perform log monitoring and view information such as the total traffic of your network, the response time of your processes, and more. Tanzu CloudHealth retrieves Memory and Disk usage, and Network I/O through the Dynatrace REST API.
Currently the Dynatrace integration is supported only for the AWS EC2 instances and Azure VMs in the Tanzu CloudHealth platform.
Tanzu CloudHealth ingests the usage and performance data that Dynatrace gathers to help you in the following ways:
oneAgents.read
, metrics.read
and entities.read
as scope. For information on how to create personal access tokens, see Dynatrace documentation.Note It can take up to one hour for host data to appear in the Tanzu CloudHealth platform. Rightsizing and Metrics drilldowns can take up to 24 hours for collection and display in the Tanzu CloudHealth platform.
The Dynatrace account will appear on the Tanzu CloudHealth platform Dynatrace page.
Tanzu CloudHealth platform collects new assets, in this case Dynatrace Hosts, on a 15-minute basis. These assets will have Dynatrace-specific information associated with them, such as:
NoteTanzu CloudHealth retrieves Memory and Disk usage for AWS EC2 Instance and Azure VM, both, and fetches Network I/O only for Azure VM through the Dynatrace REST API.
The following metrics are collected from Dynatrace.
Metric Family | Tanzu CloudHealth Metric | Tanzu CloudHealth Aggregation | Dynatrace Metrics |
---|---|---|---|
File System | File System Size (GB) | avg, min, max | builtin:host.disk.avail + builtin:host.disk.used |
File System | File System Used (GB) | avg, min, max | builtin:host.disk.used |
File System | File System Used % | avg, min, max | builtin:host.disk.usedPct |
Memory | Memory Total | avg, min, max | builtin:host.mem.total |
Memory | Memory Free | avg, min, max | builtin:host.mem.avail.bytes |
Memory | Memory Used % | avg, min, max | builtin:host.mem.usage |
Network | Bytes received | avg, min, max | builtin:host.net.nic.bytesRx |
Network | Bytes sent | avg, min, max | builtin:host.net.nic.bytesTx |
Network | PacketsReceivedRate | avg, min, max | builtin:host.net.nic.packets.rx |
Network | PacketsSentRate | avg, min, max | builtin:host.net.nic.packets.tx |
.
.
Metrics pulled in from Dynatrace will be available for each host within the Metrics report. When drilling into metrics charts for individual assets, Tanzu CloudHealth will show when the metrics source is coming from Dynatrace.
To view the metrics chart -
The following is an example of AWS Instance metric chart.
Metrics pulled in from Dynatrace will be available in the Tanzu CloudHealth AWS EC2 Performance report and Azure VM Performance report. The following is an example of AWS EC2 Instance performance report.
Further, you can drill into Performance Detail by clicking on the data points on the chart.
NoteWe are soon adding Dynatrace metrics support in perspectives in the Tanzu CloudHealth platform.
Identify suspicious activity, get context on security incidents, and develop incident remediation measures.
Alert Logic is the leader in security and compliance solutions for the cloud. It provides security-as-a-service for on-premises, cloud, and hybrid infrastructures, and delivers deep security insight and continuous protection at a lower cost than traditional security solutions.
For more information, see the Alert Logic website.
Together, Alert Logic and Tanzu CloudHealth can protect your sensitive data in the following ways:
Click Save Account.
Tanzu CloudHealth begins collecting data within 15 minutes of account setup. Thereafter, data is collected every 15 minutes. Tanzu CloudHealth fetches up to a year’s worth of data from the date when you add the Alert Logic account.
From the menu, select Reports > Security > Alert Logic Reports to view the Alert Logic incident report. You can filter the report by perspectives that you previously created.
The report provides a summary of incidents over time. If you added pinned filters and chart definitions in other InterActive Report views, they are persistent in this report.
The integration with Alert Logic gives you details on incidents. To view incident details, from the menu, select Reports > Security > Alert Logic Incident Detail.
View details of each incident by clicking the View icon. To review the incident within your Alert Logic account, click the Alert Logic logo.
Enable Chef with Tanzu CloudHealth to leverage Tanzu CloudHealth’s integration capability to get additional information about your infrastructure. Chef Environments can be directly leveraged to create perspectives.
Chef is a configuration management framework that simplifies the task of configuring and maintaining server infrastructure through the principal of infrastructure as code. It leverages a pure-Ruby domain-specific language (DSL) for writing “recipes” that define in code how to provision system resources. Recipes are collected into “cookbooks.”
Recipes use building blocks called resources. A resource describes some piece of infrastructure, such as a file, a template, or a package to be installed (such as Tanzu CloudHealth’s performance and monitoring agent). You can use the many resources included in Chef or create your own to manage unique configurations and legacy systems.
The Chef server stores your recipes as well as other configuration data. The Chef client is installed on each node in your network. A node can be a physical server, a virtual server, or a container instance. The Chef client periodically polls the Chef server for the latest recipes and checks to see if the node is in compliance with the policy defined by these recipes. If the node is out of date, the Chef client runs them on the node to bring it up to date.
If your company uses Chef, you can leverage Tanzu CloudHealth’s integration capability to get additional information about your infrastructure. Chef Environments can be directly leveraged to create perspectives. Ohai metrics can be directly leveraged to correlate the instance level metrics for memory and filesystem usage, which when combined with the Cloudwatch metrics can provide you a holistic view of the sizing of your instances and volumes. This allows you to ensure that you are not severely over or under provisioned.
The Chef client on each node reports back to the Chef server with metadata that includes information from the perspective of the operating system inside the virtual machine. This metadata includes information about available resources, such as memory and file systems, and their utilization.
The Tanzu CloudHealth aggregator collects this data from the Chef server every 15 minutes and reports back to the Tanzu CloudHealth RESTful API over HTTPS. The data collected from the Chef server can be broadly broken down as follows:
Node information
Metadata that can be leveraged for Perspectives and filtering
Setup an account in Tanzu CloudHealth for each “organization” configured in Chef.
cloudhealth\_aggregator
with administrator privileges. and use that username and certificate for the Tanzu CloudHealth console form.api.chef.io
cloudhealth\_aggregator
.pem
file that is saved when the client is created.Hosted
Use this option if you are using a private Chef server that is not accessible at a public IP address, and cannot be made accessible to the Tanzu CloudHealth platform.
In order to provide Tanzu CloudHealth visibility into your private Chef server, install the Tanzu CloudHealth aggregator. The aggregator is an agentless collector that can be deployed to your infrastructure for collection of data from both hosted and local systems. The aggregator is intended to run on a dedicated instance and requires Java to be available.
Once an aggregator is installed, the Tanzu CloudHealth platform needs to be configured with a Chef account for each Chef server configured.
Ubuntu 22.04
and OpenJDK 11
is ideal.sudo apt-get install openjdk-11-jre-headless
If you see an output stating that alternatives have been installed, this step is complete. 3. Verify if the OpenJDK 11 is set as the default Java version using the following command -
sudo update-alternatives --config java
If the OpenJDK 11 is not set as default Java version, then run the following command -
sudo update-java-alternatives -s java-1.11.0-openjdk-amd64
Add aggregator to Tanzu CloudHealth platform.
Get the install script.
Install the aggregator.
chmod 700 cht\_installer.sh
Note:
sudo
./opt
, run using sudo.Once the aggregator is installed and running, you can create or assign Chef accounts to it.
Configure the account settings.
4000
for private Chef 10 or 8000
for private Chef 11+..pem
file that is saved when the client is created.When using an aggregator, all credentials entered into the Tanzu CloudHealth platform are stored in a secure local vault. If the aggregator is terminated, or needs to be reinstalled, all credentials will need to be entered again.
Note: Contact your Account Manager or Solutions Architect for help with configuring the Private Chef data collection.
.pem
file. With this approach, you can revoke access at any time.4000
or 8000
open so that the Chef server can communicate with Chef nodes.443
for hosted, 4000
for private Chef 10, or 8000
for private Chef 11+..pem
file: Ensure that the right .pem
file for the right user and organization combination is being used. A private .pem
file is required.The Instance Rightsizing Report provides a view into the utilization of EC2 instances. For each instance, it reports a score for attributes such as CPU, Memory, and Disk. The report helps with making rightsizing decisions.
While CloudWatch metrics provide detailed performance information from outside the VM, Chef can provide information from the point of view of the operating system. This information allows Tanzu CloudHealth to calculate a score that reflects how the provisioned resources are being utilized.
Instances with low scores reflect possible concern of being over-provisioned or underutilized.
Usage numbers are represented visually as battery meters with the length and color of the bar representing the resource score. Hovering over the meter brings up a detail panel that allows quick access to the detailed resource metrics.
Detailed trended utilization information is available by clicking the relevant “battery meters.”
By default, the report is sorted by Wasted Cost, highest first, which allows you to identify the underutilized resources costing you the most.
Note: You can only customize columns in the All topic view.
The Volume Rightsizing Report gives you a view into the utilization of provisioned Elastic Block Storage (EBS) capacity and IOPS.
Chef data provides visibility into file system utilization, which is used to score the usage of provisioned storage capacity. CloudWatch IOPS reporting is leveraged to score PIOPS utilization.
The score provides quick visibility as to how well the volume has been provisioned for its purpose. The Wasted Cost allows prioritizing those volumes that are the most underutilized.
Similar to the instance report, detailed trended utilization information is available by clicking the relevant “battery meters.”
You can build both standard and dynamic Perspectives for Chef Environments.
Dynamic Perspective: Environments (Chef)
You can then search using the Categorize option.
Click Add All as Dynamic Rule to build a Perspective with Chef Environments as sub groups. You can use this Perspective across all the cost, usage, and performance reports. You can also use the Perspective for Policy Notifications and Pulse reports.
You can also build Standard Perspectives using the Chef metadata for Runlist, or Recipes as illustrated below:
Note: This Perspective was built using values from Chef runlist for filtering.
We recommend creating a Role Perspective, which leverages the run list to identify the functional role of a node. This delivers fine grained information that will enable identifying nodes and related assets in cost, usage and performance reports.
The Rightsizing by Perspective report is especially powerful when combined with a Role based perspective. It provides at-a-glance capacity and utilization information across functional clusters.
Once your Perspective for Chef is built, you can begin leveraging the Perspective across the platform. For example, at Tanzu CloudHealth we use a standard Perspective called Function that we built by searching and filtering on values from the Runlist. The report, shown below, gives our CTO quick visibility on which functions are driving up the infrastructure cost.
The Tanzu CloudHealth platform provides an explorer view of all your Chef managed assets. Review all assets configured using Chef navigating to Assets > Chef. There is a high level breakdown provided by Environments, Nodes, Cookbooks, and Filesystems.
You can also create a Policy to notify you on a Chef runlist that can be leveraged for governance within your organization. For example, we use the following policy with multiple conditions based on the Chef Runlist. We use this to manage compliance of our Chef runlist requirements.
Ingest AWS, server, and playbook information. Manage and automate complex multi-tier deployments.
Ansible is an IT automation engine for activities such as cloud provisioning, configuration management, application deployment, and intra-service orchestration. Ansible models your IT infrastructure by describing how all of your systems inter-relate, rather than just managing one system at a time.
Ansible does not use agents or additional custom security infrastructure, making it easy to deploy. Most importantly, you can describe automation jobs in the Ansible Playbook using YAML syntax.
If your company uses Ansible, you can leverage Tanzu CloudHealth’s integration capability to get additional information about your infrastructure. Ansible facts can also be used to create Perspectives.
gather_facts: no
must not be present in your playbooks.httplib2
on the host machine. Use one of these approaches to install.
apt-get
: sudo apt-get install python-httplib2
pip
: sudo pip install httplib2
ohai
or facter
on your managed nodes. Otherwise, node uptime information does not appear on the Tanzu CloudHealth platform.In your playbooks, make sure Ansible is installed and run the following command:
ansible-galaxy install git+https://github.com/CloudHealth/ansible-cloudhealth-collector.git
Tanzu CloudHealth uses the cloudhealth_api_key
variable to identify you when you make API calls. There are three ways to define this variable.
As plain text: Store as plain text in your playbook variables. cloudhealth_api_key: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
As environment variable: Define playbook variable and add this line to your ~/.bashrc
file and source ~/.bashrc
.
export CLOUDHEALTH_API_KEY=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Secure storage: Use Ansible Vault to store the API key.
Setting up the Tanzu CloudHealth Ansible collector does not change how you run your playbooks. Run your playbooks as you normally would and the Tanzu CloudHealth Collector role will will gather facts during each run.
You can view the information gathered from Ansible in two ways.
In the Tanzu CloudHealth platform 1. From the menu, select Setup > Ansible. A list of all Ansible Accounts created that generated an API key appears. 2. Click the View button to access the General information tab. You can view which nodes are associated with that particular account by clicking on the Nodes tab. 3. Click the view button for a node to see the facts gathered.
In AWS Explorer 1. In the AWS Explorer, select Integrations > Ansible. 2. Click Nodes to view nodes across all Ansible accounts.
An additional benefit to gathering information from Ansible is the ability to use that information to create Perspectives.
Understand performance trends and requirements so that you can make the good provisioning decisions.
The Datadog integration gives you improved visibility across every dimension of your cloud environment. The resulting holistic view provides a better understanding of performance trends and requirements so that you can make good provisioning decisions.
Click Save Account.
It may take up to one hour for the host data to be available in Tanzu CloudHealth. In addition, Rightsizing and Metrics drilldowns can take up to 24 hours to collect and show within the Tanzu CloudHealth platform.
After account setup, the imported Datadog tags can be used in perspectives and reports.
Tanzu CloudHealth collects new assets, in this case Datadog Hosts, on a 15 minute basis. These assets will have Datadog-specific information associated with them, such as:
Datadog tags are treated as dynamic attributes on a Datadog Host, upon which users can write Perspectives. Tanzu CloudHealth will also add a single Tags attribute that aggregates all current tags (identical to what the platform does today with EC2 Instance). Datadog tags cannot be overwritten with custom tags.
Tanzu CloudHealth collects new Datadog tags every 15 minutes and adds them to the Datadog Host.
Tanzu CloudHealth collects File Systems from Hosts running the Datadog agent (note: Datadog agent required).
Tanzu CloudHealth collects base performance metrics on an hourly basis. For each metric, Tanzu CloudHealth performs basic aggregation functions (avg, min, max, sum) for the hour to ensure consistency of this data with other data sources.
The metrics collected from Datadog include:
Metric Family | Tanzu CloudHealth Metric | Tanzu CloudHealth Aggregation | Datadog Metrics |
---|---|---|---|
CPU | CPU % | avg, min, max | = system.cpu.system + system.cpu.user |
File System | File System Size (GB) | avg, min, max | = system.disk.total |
File System | File System Used (GB) | avg, min, max | = system.disk.used |
File System | File System Used % | avg, min, max | = system.disk.used / system.disk.total * 100 |
Memory | Memory Capacity (GB) | avg, min, max | = system.mem.used + system.mem.free |
Memory | Memory Free (GB) | avg, min, max | = system.mem.free + system.mem.cached +system.mem.buffers |
Memory | Memory Used % | avg, min, max | = system.mem.pct_usable |
Network | Bytes received | avg, min, max | = system.net.bytes\rcvd |
Network | Bytes sent | avg, min, max | = system.net.bytes\sent |
File System metrics will be correlated to a File System and the Datadog Host/EC2 Instance.
Datadog tags can be used to create specific business asset grouping within Tanzu CloudHealth Perspectives. Datadog Hosts will show in the ‘Choose an Asset Type’ menu, as well as specific Datadog fields including Datadog Console, Datadog Hostname, and tags pulled in from the Datadog Account.
Datadog will pull in CPU, Memory, and Disk for instances and show them within the Rightsizing Report for each instance that it has metrics for. Datadog CPU metrics will take priority over Cloudwatch CPU metrics in this section as well. Also, if Tanzu CloudHealth detects Datadog agent running for a host, the platform will exclude CloudWatch CPU collection for that host.
Extra columns can be added within the Rightsizing Report as well for Datadog specific information.
Clicking the Datadog icon on this screen will open a browser tab to the Datadog console, displaying the performance dashboard for the host.
Once inside the Hosts menu, you can click on the Instance Name and drill down into Performance. This will give you a detailed view of network performance in a multi-chart visualization.
You can also click on the Datadog Console link and open the Datadog Dashboard for the corresponding instance.
Metrics pulled in from Datadog will be available for each instance within the Metrics report.
When drilling into metrics charts for individual assets, Tanzu CloudHealth will show when the metrics source is coming from Datadog.
Connect a Slack workspace to create and drive Policy Action workflows.
This feature is in private beta. If you want to enable this feature, contact the support team [email protected].
Slack is a tool that provides a digital workspace to organizations. You can use Slack to communicate across teams, collaborate on projects, and automate workflows using bots. In the context of the Tanzu CloudHealth Platform, you can use Slack to drive and create workflows via Policy Actions.
For example, consider that the Tanzu CloudHealth security recommendations feature discovers vulnerabilities in your infrastructure. You can trigger a Slack message to a specific channel in your Slack workspace. The message contains links to the notification and the specific policy that was violated in the Tanzu CloudHealth Platform.
@CloudHealth
user to those channels. Repeat these steps for each Slack workspace that you want to link.A recipient can be a public channel, a private channel, or a user. If you select a public or private channel as recipient, make sure that you have invited the
@CloudHealth
user to the channel. If this user is not invited, the Tanzu CloudHealth Platform is unable to send Slack messages to the channel.
If the Slack message action that you create does not send messages appropriately to your channel, follow these steps.
@cloudhealth
bot was not invited to the channel.